function catatree($parentid=0){
global $r;
echo '<ul>';
foreach($r AS $key=>$value){
if($parentid == $value["parentid"]){
?>
    <li><div class="ul_info"><?php echo $value['pagename'];?></div>
        <?php if($value["subcatas"]>0){
 catatree($value['id']);
}?>
      </li>
    <?php
}
}
unset($parentid);
echo '</ul>';
unset($value);
}相关图片:其实在二级分类里面是有产品1-2的。不知道哪里出错了 没有显示 直接查找自己的子类 然后就没有了

解决方案 »

  1.   

    Array
    (
        [0] => Array
            (
                [id] => 79
                [rootid] => 74
                [parentid] => 78
                [subcatas] => 1
                [pagename] => 产品1-1-1-1
                [identity] => p1_1_1_1
            )
     
        [1] => Array
            (
                [id] => 80
                [rootid] => 74
                [parentid] => 78
                [subcatas] => 3
                [pagename] => 产品1-1-1-2
                [identity] => p1_1_1_2
            )
     
        [2] => Array
            (
                [id] => 81
                [rootid] => 74
                [parentid] => 80
                [subcatas] => 0
                [pagename] => 产品1-1-1-2-1
                [identity] => p1_1_1_2_1
            )
     
        [3] => Array
            (
                [id] => 83
                [rootid] => 74
                [parentid] => 78
                [subcatas] => 0
                [pagename] => 产品1-1-1-3
                [identity] => p1_1_1_3
            )
     
        [4] => Array
            (
                [id] => 84
                [rootid] => 74
                [parentid] => 80
                [subcatas] => 0
                [pagename] => gdsgdsf
                [identity] => dsfdsfsd
            )
     
        [5] => Array
            (
                [id] => 85
                [rootid] => 74
                [parentid] => 80
                [subcatas] => 0
                [pagename] => fdhfghdfgdfg
                [identity] => dfgdfgsgsdf
            )
     
        [6] => Array
            (
                [id] => 86
                [rootid] => 74
                [parentid] => 78
                [subcatas] => 0
                [pagename] => fdhdfgdfgdfgdfgdfgdf
                [identity] => dfgdfgdfgdfgdfgdf
            )
     
        [7] => Array
            (
                [id] => 87
                [rootid] => 74
                [parentid] => 79
                [subcatas] => 0
                [pagename] => dfgdfgfdgdfgdfgd
                [identity] => dfgdfgdf76
            )
     
        [8] => Array
            (
                [id] => 74
                [rootid] => 0
                [parentid] => 0
                [subcatas] => 2
                [pagename] => 产品1
                [identity] => p1
            )
     
        [9] => Array
            (
                [id] => 76
                [rootid] => 74
                [parentid] => 74
                [subcatas] => 1
                [pagename] => 产品1-1
                [identity] => p1-1
            )
     
        [10] => Array
            (
                [id] => 78
                [rootid] => 74
                [parentid] => 76
                [subcatas] => 4
                [pagename] => 产品1-1-1
                [identity] => p1_1_1
            )
     
        [11] => Array
            (
                [id] => 77
                [rootid] => 74
                [parentid] => 74
                [subcatas] => 0
                [pagename] => 产品1-2
                [identity] => p1_2
            )
     
    )
      

  2.   

    我猜吧,这个程序只处理数组中键值为1的值,没看到你有对id ++方面的处理
    因此一直是
    $value[1]
    $value[1][1]
    $value[1][1][1]
    直到底层
      

  3.   

    从 $r[2] 开始,
    [subcatas] => 0
    因此不执行
         if($value["subcatas"]>0)
             catatree($value['id']);假设你传入的参数 $parentid 是 78 ,那么接下来只会输出 $r[6]["parentid"] ,这样就结束了
      

  4.   

    模拟一下看看吧 ,你输入的参数是什么呢function catatree($parentid=0){global $r;foreach($r AS $key=>$value)
       {
       if($parentid == $value["parentid"])
             echo    $value['pagename'];         if($value["subcatas"]>0)
                   catatree($value['id']);   }}
      

  5.   

    感觉代码好像有点问题吧,$parentid == $value["parentid"]如果只有两层的话,而且输入的parentid又是第二层的,那会出现什么结果,那不就循环结束了,第二层的数据怎么能显示出来呢。
      

  6.   

    <?php if($value["subcatas"]>0){
     catatree($value['id']);
    }?>
    我对这个的理解是如果这个分类有子分类,那么就重新执行这个函数,但是循环到最后父ID的值变了,导致最后没有得到其他的分类,不知道这个有没有什么好的办法解决呢。