【发布时间】:2015-07-03 21:18:23
【问题描述】:
我花了一段时间试图从旧答案中得到我需要的东西,但还没有完全得到它(虽然已经接近了!)。
我有这个;
[January] => Array
(
[Tuesday] => Array
(
[foo] => Array
(
[82] => 47731
[125] => 19894
)
[bar] => Array
(
[82] => 29911
[125] => 10686
)
)
}
...我想要这个;
[0] => Array
(
'key' => 'January'
'children' => Array
[0] => Array
{
'key' => 'Tuesday'
'children' => Array
[0] => Array
{
'key' => 'foo'
'values' => Array
{
[82] => 47731
[125] => 19894
}
[1] => Array
{
'key' => 'bar'
'values' => Array
{
[82] => 29911
[125] => 10686
}
}
)
}
通过改编Recursively change keys in array 的第一个答案,我已经相当接近了,但只有我的结果的底层是正确的 - 带有键 'Tuesday'、'foo' 和 'bar' 的节点看起来与源数组。
这是我到目前为止所得到的;
public function transform_hierarchical_output(&$var)
{
if (is_array($var))
{
$final = [];
$i = 0;
foreach ($var as $k => &$v)
{
$new_node = [
'key' => $k,
'children' => $v
];
$k = $i;
$this->transform_hierarchical_output($v);
$final[$k] = $new_node;
$i++;
}
$var = $final;
}
elseif (is_string($var))
{
}
}
这需要使用任意长度和深度的源数组。
提前致谢。
杰夫
【问题讨论】:
-
为什么
values用于foo和bar的孩子,而children用于其他人?这里有什么逻辑吗? -
最终每个节点都需要一组值,但我想我暂时不用了!
标签: php recursion multidimensional-array