我有一个数组,我填充了父母、孩子、孩子的孩子、孩子的孩子的孩子等等。但是,我似乎无法弄清楚如何为尽可能多的级别做到这一点,而不必写出每个级别。
首先现在我有
foreach($this->tree as $k=>$v) {
if($v['id'] == $i['pid']) {
// Add children
$this->tree[$k]['children'][] = array('name'=>$i['name'],'id'=>$i['id']);
break;
}else{
foreach($v['children'] as $kc=>$vc) {
$this->tree[$k]['children'][$kc]['children'][] = array('name'=>$i['name'],'id'=>$i['id']);
}
}
}
这会产生一些看起来像
Array
(
[0] => Array
(
[name] => Test
[id] => 1
[children] => Array
(
[0] => Array
(
[name] => Test2
[id] => 2
[children] => Array
(
[0] => Array
(
[name] => Test 3
[id] => 3
)
)
)
)
)
);
但我似乎无法弄清楚如何不写出十亿个 foreach 循环。
$i 只有四行,id、pid(父 id)、name 和 weight。