有一个分类表 calssID   -----唯一标识
pid  -----父级ID
name -----名字
path -----路径CREATE TABLE `calss` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) NOT NULL DEFAULT '0',
  `name` varchar(32) NOT NULL,
  `path` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;现在求一个路径的写法例如数据如下 INSERT INTO calss VALUES ('1', '0', 'WEB开发',web);
INSERT INTO calss VALUES ('2', '1', '后端',control);
INSERT INTO calss VALUES ('3', '2', '语言',language);
INSERT INTO calss VALUES ('4', '2', '数据库',data);
INSERT INTO calss VALUES ('5', '3', 'php',php);
INSERT INTO calss VALUES ('6', '3', 'jsp',jsp);
INSERT INTO calss VALUES ('7', '3', 'asp',asp);
INSERT INTO calss VALUES ('8', '0', '手机应用开发',phone);
INSERT INTO calss VALUES ('9', '8', 'ios',ios);求 php类别的 路径  
最终结果如下格式
$php_path="web/control/language/php/";
求个具体php代码实现 感激不尽 据说用到递归思想  我看了一天递归 楞是没看明白 递归的思想 可否能不用递归实现,用递归实现的 请帮忙写清楚每一句代码注释  感激不尽了 
最后一句  老大 你好 妞哥 你好 

解决方案 »

  1.   

    你搜索php,发现pid是3搜索id为3的,发现pid是2……
    某个pid为0,终止这个过程,,逆序就是路径
      

  2.   


    不太明白  求码 求一个统一写法啊 我不一定非要求PHP类的路径 我还有可能求别的类路径  万分感谢
      

  3.   

    其他的也是同一个道理. 按那个顺序查找到pid为0即为顶端。
      

  4.   

    本帖最后由 PhpNewnew 于 2012-02-09 14:07:35 编辑
      

  5.   

    <?php
    //自己生成一个字段id为数组key的数组                                                                                                         
    $a[1] = array('1', '0', 'WEB开发','web');
    $a[2] = array('2', '1', '后端','control');
    $a[3] = array('3', '2', '语言','language');
    $a[4] = array('4', '2', '数据库','data');
    $a[5] = array('5', '3', 'php','php');
    $a[6] = array('6', '3', 'jsp','jsp');
    $a[7] = array('7', '3', 'asp','asp');
    $a[8] = array('8', '0', '手机应用开发','phone');
    $a[9] = array('9', '8', 'ios','ios');
    function getPath($id,$arr)
    {
            $path   = array();
            while(isset($arr[$id]))
            {
                    array_unshift($path,$arr[$id][3]);
                    $id = $arr[$id][1];
            }
            return $path;
    }
    echo implode(DIRECTORY_SEPARATOR,getPath(5,$a));
    echo PHP_EOL;
    echo implode(DIRECTORY_SEPARATOR,getPath(7,$a));
    echo PHP_EOL;
    echo implode(DIRECTORY_SEPARATOR,getPath(4,$a));
    ?>