假设我有一个一维阵列$arr
像这样:如何从循环创建树状数组?
Array
(
['key1'] => 1
['key2'] => 1
['key3'] => 1
['key4'] => 1
)
欲循环通过$arr
这样的:
foreach($arr as $key => $a) {
//$tree[????] = ????? Here is my concern
}
使得,做print_r($tree)
产生
Array
(
['key1'] => Array
(
['key2'] => Array
(
['key3'] => Array
(
['key4'] => 1
)
)
)
)
我关心的是如何增加循环f内的数组$tree
的尺寸(不是值)从单维数组$numbers
这样$tree['key1']['key2']['key3']
是一个数组而$tree['key1']['key2']['key3']['key4']
等于1
。
此外,如果我有一个单维数组$foo
与10个元素。我应该生成另一个数组$bar
,它扩展到与上面的输出类似的10维数组。
我应该在foreach
循环内做些什么?或者,而不是使用循环,有没有办法从一维数组产生像上面那样的输出?
编辑:
确定好你显然需要某种形式的递归函数,但可以 你能解释一下你怎么知道KEY2应该为key1的孩子,KEY3 应该是一个孩子key2等基于你显示的数据?
1D数组的下一个元素是前一个元素的子元素。因此,如果一维数组是这样的:
Array
(
['bar'] => 1 // I don't care of the values as of the moment
['foo'] => 1
['baz'] => 1
)
元foo
应该是bar
的孩子,和元素baz
应该是foo
的树阵的孩子。
好吧所以除了最后一个元素的所有东西的实际值都是 不相关?
实际上,1D数组的所有值都与此刻无关。我只关心构建树型数组。
确定好你显然需要某种形式的递归函数的,但你能解释一下你怎么知道'key2'应该是'一个孩子根据你显示的数据,key1','key3'应该是'key2'的一个孩子吗? – DaveRandom
Hi @DaveRandom。请参阅修改。 –
好吧,除了最后一个元素之外的所有东西的实际值是不相关的? – DaveRandom