做一个;树数组“;来自php中的数组
我使用PHP。我有一个数组,如下所示:(level属性是我要生成的树中分支的级别) 我的目标是从中生成某种树数组,如下所示:做一个;树数组“;来自php中的数组,php,arrays,algorithm,tree,Php,Arrays,Algorithm,Tree,我使用PHP。我有一个数组,如下所示:(level属性是我要生成的树中分支的级别) 我的目标是从中生成某种树数组,如下所示: Array ( [0] => stdClass Object ( [value] => Array ( [name] => Dog
Array (
[0] => stdClass Object
(
[value] => Array
(
[name] => Dog
[level] => 1
)
)
Array (
[1] => stdClass Object
(
[value] => Array
(
[name] => Yorkshire
[level] => 2
)
)
[2] => stdClass Object
(
[value] => Array
(
[name] => Rottweiler
[level] => 2
)
)
)
[3] => stdClass Object
(
[value] => Array
(
[name] => Cat
[level] => 1
)
)
)
但我真的做不到。我甚至有问题要看算法!
任何帮助都将不胜感激
$treelist = array();
foreach($list as $key=>$l){
if($l['level'] == 1){
$l['childs'] = array();
$treelist[] = $l;
}else{
$treelist[count($treelist-1)]['childs'][] = $l;
}
}
诸如此类
类似这样的事情我是这样做的:
$new = array();
foreach ($arr as $a){
$new[$a['parentid']][] = $a;
}
$tree = createTree($new, $new[0]); // changed
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;
}
来自亚瑟:我设法这样做:
$new = array();
foreach ($arr as $a){
$new[$a['parentid']][] = $a;
}
$tree = createTree($new, $new[0]); // changed
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;
}
来自arthur:您需要某种id来告诉您谁是这个孩子的父母。因为我知道这棵树的等级,但我不知道这棵树属于哪一级。我也想过,但这棵树已经“有序”了。我的意思是,它就像:1级11级12级2级3级31级32级理解,如果你能保持这个顺序,你的解决方案将是:(看答案)你需要某种id来告诉你谁是这个孩子的父母。因为我知道这棵树的等级,但我不知道这棵树属于哪一级。我也想过,但这棵树已经“有序”了。我的意思是,它就像:1级11级12级2级3级31级32级理解,如果你能保持这个顺序,你的解决方案将是:(看答案)