从数组列表创建数组树

我有一个像这样的清单:

array(

array(id=>100, parentid=>0, name=>'a'),

array(id=>101, parentid=>100, name=>'a'),

array(id=>102, parentid=>101, name=>'a'),

array(id=>103, parentid=>101, name=>'a'),

)

但是更大了,所以我需要一种有效的方法来使它变成像这样的树:

array(

id=>100, parentid=>0, name=>'a', children=>array(

id=>101, parentid=>100, name=>'a', children=>array(

id=>102, parentid=>101, name=>'a',

id=>103, parentid=>101, name=>'a',

)

)

)

我不能使用诸如嵌套集之类的东西,也不能使用诸如becoas之类的东西,因为我可以在数据库中添加左右值。有任何想法吗?

回答:

哦,这就是我解决的方法:

$arr = array(

array('id'=>100, 'parentid'=>0, 'name'=>'a'),

array('id'=>101, 'parentid'=>100, 'name'=>'a'),

array('id'=>102, 'parentid'=>101, 'name'=>'a'),

array('id'=>103, 'parentid'=>101, 'name'=>'a'),

);

$new = array();

foreach ($arr as $a){

$new[$a['parentid']][] = $a;

}

$tree = createTree($new, array($arr[0]));

print_r($tree);

function createTree(&$list, $parent){

$tree = array();

foreach ($parent as $k=>$l){

if(isset($list[$l['id']])){

$l['children'] = createTree($list, $list[$l['id']]);

}

$tree[] = $l;

}

return $tree;

}

以上是 从数组列表创建数组树 的全部内容, 来源链接: utcz.com/qa/406041.html

回到顶部