foreach循环php里面的递归函数

时间:2016-08-24 18:59:59

标签: php loops recursion foreach

$parents = array(
    array('id'=>1,'parent_id'=>0,'title'=>'Parent1'),
    array('id'=>2,'parent_id'=>1,'title'=>'Child1'),
    array('id'=>3,'parent_id'=>1,'title'=>'Child2'),
    array('id'=>5,'parent_id'=>3,'title'=>'Child2.1'),
    array('id'=>6,'parent_id'=>5,'title'=>'Child2.1.1'),
    array('id'=>7,'parent_id'=>5,'title'=>'Child2.1.2'),
    array('id'=>8,'parent_id'=>7,'title'=>'Child2.1.2.1'),
    array('id'=>9,'parent_id'=>2,'title'=>'Child1.1'),
    array('id'=>10,'parent_id'=>0,'title'=>'Parent2'),
    array('id'=>11,'parent_id'=>2,'title'=>'Child1.2'),
    array('id'=>12,'parent_id'=>6,'title'=>'Child2.1.1.1'),
);

function childParentTree($parents,$parentId = 0) {

    $str = '';
    foreach($parents as $parent):
        if($parentId == $parent['parent_id']) {
             // Create Label
             $str .= '<li>'.$parentId.$parent['title'].'</li>';
             // search Child
             $str .= childParentTree($parents,$parent['id']);
        }
    endforeach;

    return $str;
}

echo childParentTree($parents);

上面的代码没问题,但是当我运行代码时,我对结果感到困惑。打印后

0 
1
2
9

对于变量$parentId,它打印11 这意味着以前的父ID,但是如何

有人可以解释原因吗?提前致谢。

0 个答案:

没有答案