继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

无限级分类三个重要的功能

大叔_fighting
关注TA
已关注
手记 81
粉丝 44
获赞 400

1.面包屑
// 迭代,效率比递归高,代码也没多.
// 找家谱树推荐用迭代
function tree($arr,$id) {
$tree = array();

while($id !== 0) {
    foreach($arr as $v) {
        if($v['id'] == $id) {
            $tree[] = $v;
            $id = $v['parent'];
            break;
        }
    }
}

return $tree;//上帝  海定 北京
//return array_reverse($tree);北京 海定  上帝

}

2.用迭代法找子孙树
function subtree($arr,$parent=0) {
$task = array($parent); // 任务表
$tree = array(); // 地区表
while(!empty($task)) {
$flag = false;
foreach($arr as $k=>$v) {
if($v['parent'] == $parent) {
$tree[] = $v;
array_push($task,$v['id']); // 把最新的地区id入任务栈
$parent = $v['id'];
unset($arr[$k]); // 把找到单元unset掉
$flag = true; //说明找到了子栏目

        }
    }
    if($flag == false) {
        array_pop($task);
        $parent = end($task);
    }

    //print_r($task);
}
return $tree;

}

print_r(subtree($area,0));

3./ 找子栏目
function findson($arr,$id) {
// $id栏目的儿子有些呢?
// 答:数组循环一遍,谁的parent值 等于 $id,谁就是他儿子
$sons = array(); // 子栏目数组
foreach($arr as $v) {
if($v['parent'] == $id) {
$sons[] = $v;
}
}
return $sons;
}

打开App,阅读手记
11人推荐
发表评论
随时随地看视频慕课网APP

热门评论

哥们,能不能优化一下排版,排版绝对硬伤

查看全部评论