我在php中有一个数组:
Array
(
[0] => Array
(
[ref] => a
[ref_father] => 0
)
[1] => Array
(
[ref] => b
[ref_father] => 0
)
[2] => Array
(
[ref] => c
[ref_father] => a
)
如何从这个数组中创建一个树:
Array
(
[0] => Array
(
[ref] => a
[ref_father] => 0
)
[1] => Array
(
[ref] => c
[ref_father] => a
)
[2] => Array
(
[ref] => b
[ref_father] => 0
)
这意味着我想要显示父亲和他父亲的每个父亲。感谢
答案 0 :(得分:0)
我将通过基础数组进行迭代,并创建一个新的数组,其中父亲作为索引,所有子项都在数组中。
新数组看起来像:
Array
(
[0] => Array('a', 'b') // 0 Is the base root
['a'] => Array('c')
['b'] => Array ()
['c'] => Array()
然后,您可以使用如下函数:
$a = array(
0 => array('a', 'b'),
'a' => array('c'),
'b' => array(),
'c' => array()
);
$depth_array = array();
function build_depth($key, $mapped_array) {
if (array_key_exists($key, $mapped_array)) {
if ( count($mapped_array[$key]) == 0 ) return array();
else {
foreach( $mapped_array[$key] as $child ) {
return array($child => build_depth($child, $mapped_array));
}
}
}
}
foreach ( $a[0] as $root_child ) {
$depth_array[$root_child] = build_depth($root_child, $a);
}
无论深度如何,这都会递归地建立深度。 在这里测试: http://phptester.net/