做一个;树数组“;来自php中的数组

做一个;树数组“;来自php中的数组,php,arrays,algorithm,tree,Php,Arrays,Algorithm,Tree,我使用PHP。我有一个数组,如下所示:(level属性是我要生成的树中分支的级别) 我的目标是从中生成某种树数组,如下所示: Array ( [0] => stdClass Object ( [value] => Array ( [name] => Dog

我使用PHP。我有一个数组,如下所示:(level属性是我要生成的树中分支的级别)

我的目标是从中生成某种树数组,如下所示:

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级理解,如果你能保持这个顺序,你的解决方案将是:(看答案)