版权声明:本文为CSDN博主「陈文焕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_23116221/article/details/109910846
pid找上级id
$array = array(
array('id' => 1, 'pid' => 0, 'n' => '河北省'),
array('id' => 2, 'pid' => 0, 'n' => '北京市'),
array('id' => 3, 'pid' => 1, 'n' => '邯郸市'),
array('id' => 4, 'pid' => 2, 'n' => '朝阳区'),
array('id' => 5, 'pid' => 2, 'n' => '通州区'),
array('id' => 6, 'pid' => 4, 'n' => '望京'),
array('id' => 7, 'pid' => 4, 'n' => '酒仙桥'),
array('id' => 8, 'pid' => 3, 'n' => '永年区'),
array('id' => 9, 'pid' => 1, 'n' => '武安市'),
array('id' => 10, 'pid' => 8, 'n' => '永年区镇'),
array('id' => 11, 'pid' => 0, 'n' => '上海市')
);
function getTree($array, $pid=0){
$tree = array();
foreach ($array as $key => $value) {
if ($value['pid'] == $pid) {
$value['children'] = getTree($array, $value['id']);
$tree[] = $value;
}
}
return $tree;
}
$list=getTree($array);
echo "<pre>";
print_r($list);
echo "</pre>";
第二种:bm规则(3,6,9,12…)
$array = array(
array('name' => '固定资产', 'bm' => '001'),
array('name' => '桌子', 'bm' => '001001'),
array('name' => '办公桌', 'bm' => '001001001'),
array('name' => '1米长办公桌', 'bm' => '001001001001'),
array('name' => '2米长办公桌', 'bm' => '001001001002'),
array('name' => '3米长办公桌', 'bm' => '001001001003'),
array('name' => '椅子', 'bm' => '001002'),
array('name' => '普通靠背椅', 'bm' => '001002001'),
array('name' => '塑料靠背椅', 'bm' => '001002002'),
array('name' => '空调', 'bm' => '001003'),
);
function getTree($array, $bm='001'){
$tree = array();
foreach ($array as $k => $v) {
$aaa = strpos($v['bm'], $bm);
$length = strlen($bm)+3;
if ($aaa == 0 && $aaa !== false && strlen($v['bm']) == $length ) {
$v['children'] = getTree($array, $v['bm']);
$tree[] = $v;
}
}
return $tree;
}
$list=getTree($array);
echo "<pre>";
print_r($list);
echo "</pre>";
第三种:点切割匹配
$array = array(
array('name' => '固定资产', 'bm' => '1.1'),
array('name' => '桌子', 'bm' => '1.1.1'),
array('name' => '办公桌', 'bm' => '1.1.1.1'),
array('name' => '1米长办公桌', 'bm' => '1.1.1.1.1'),
array('name' => '2米长办公桌', 'bm' => '1.1.1.1.2'),
array('name' => '3米长办公桌', 'bm' => '1.1.1.1.3'),
array('name' => '椅子', 'bm' => '1.1.2'),
array('name' => '普通靠背椅', 'bm' => '1.1.2.1'),
array('name' => '塑料靠背椅', 'bm' => '1.1.2.2'),
array('name' => '空调', 'bm' => '1.1.3'),
);
function getTree($data, $bm='1.1'){
$tree = array();
foreach ($data as $key => $value) {
$count1 = count(explode('.',$bm))+1;
$count2 = count(explode('.',$value['bm']));
if ($count1 == $count2 && strpos($value['bm'], $bm) === 0) {
$value['children'] = getTree($data, $value['bm']);
$tree[] = $value;
}
}
return $tree;
}
$list=getTree($array);
echo "<pre>";
print_r($list);
echo "</pre>";
标签:数据结构,name,bm,pid,树形,array,php,id,1.1
From: https://www.cnblogs.com/sunr/p/17314520.html