PHP将动态变量数组转换为树数组

时间:2017-03-14 17:07:54

标签: php arrays tree

我有一个像:

这样的数组
array(
    0 => array("a", "b", "c", ... n),
    1 => array("a", "b", "d", ... n),
    2 => array("e", "b", "c", ... n),
    .
    n
    );

n长度向下和向下。 我想要一个树形数组,如:

a {
    b {
        c {null}
        d {null}
       }
  }
e {
   b {
      c {null}
     }
  }

直接地,类似于: How to convert array to tree? 但是在PHP代码和' n'长度阵列

我的代码,翻译自javascript:

$tree = array();

function addToTree($tree, $array) {
    $length = count($array);
    for($i=0; $i<$length; $i++) {
        $tree = $tree[$array[$i]] = (($i == $length - 1) ? null : $tree[$array[$i]] || array());
    }
    return $tree;
}

1 个答案:

答案 0 :(得分:0)

答案与基督徒的答案相同,只需要编辑php右语法。

function addToTree($tree, $array) { 
    for ($i = 0, $length = count($array); $i < $length; $i++) {
        $tree = $tree[array[$i]] = (($i == $length - 1) ? null : $tree[array[$i]] || {})
    }
}

// or, without the i == length - 1 check in each iteration:
function addToTree(tree, array) { 
    for ($i = 0, $length = count($array); $i < $length -1; $i++) {
        $tree = $tree[array[$i]] = $tree[array[$i]] || {};
    } 
    $tree[array[$i]] = null;
}