<?php
$area = array(
array('id' => 1, 'name' => '安徽', 'parent' => 0),
array('id' => 2, 'name' => '海淀', 'parent' => 7),
array('id' => 3, 'name' => '剧溪县', 'parent' => 5),
array('id' => 4, 'name' => '昌平', 'parent' => 7),
array('id' => 5, 'name' => '淮北', 'parent' => 1),
array('id' => 6, 'name' => '曹阳', 'parent' => 7),
array('id' => 7, 'name' => '北京', 'parent' => 0),
array('id' => 8, 'name' => '上地', 'parent' => 2)
);
function findSons ($arr, $id) {
$sons = array();
foreach ($arr as $v) {
if ($v['parent'] == $id) {
$sons[] = $v;
}
}
return $sons;
}
function subTree ($arr, $id, $levl) {
$subs = array();
foreach ($arr as $v) {
if ($v['parent'] == $id) {
$v['levl'] = $levl;
$subs[] = $v;
//为什么不能使用levl++?因为在执行到北京的时候,$levl自加了1,就变为2了
$subs = array_merge($subs, subtree($arr, $v['id'], $levl + 1));
}
}
return $subs;
}
//$subs = subTree($area, 0, $levl = 1);
//foreach($subs as $v) {
// echo str_repeat('--', $v['levl']) . $v['name']. "<br>";
//}
function familyTree ($arr, $id) {
$tree = array();
foreach ($arr as $v) {
if ($v['id'] == $id) {
if ($v['parent'] > 0) {
//在此处传入$v['parent'],其值就是父元素的id
$tree = array_merge($tree, familyTree($arr, $v['parent']));
}
$tree[] = $v;
}
}
return $tree;
}
print_r(familyTree($area, 3));
PHP实现无限极分类代码
最新推荐文章于 2023-09-23 17:17:10 发布