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;
}
点击查看更多内容
11人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦