假设我有一个这样的一维数组$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
)
)
)
)
我关心的是如何$tree
从一个单维数组增加循环内数组的维数(而不是值),$numbers
例如$tree['key1']['key2']['key3']
一个数组并且$tree['key1']['key2']['key3']['key4']
等于1
.
此外,如果我有一个$foo
包含 10 个元素的一维数组。我应该生成另一个$bar
扩展为 10 维数组的数组,类似于上面的输出。
我应该在foreach
循环内做什么?或者不是使用循环,有没有办法从一维数组产生像上面那样的输出?
编辑:
好吧,您显然需要某种递归函数,但是您能否根据您显示的数据解释如何知道 key2 应该是 key1 的孩子,key3 应该是 key2 的孩子等?
一维数组的下一个元素是前一个元素的子元素。所以如果一维数组是这样的:
Array
(
['bar'] => 1 // I don't care of the values as of the moment
['foo'] => 1
['baz'] => 1
)
Elementfoo
应该是 的子级bar
,并且 elementbaz
应该是foo
树数组的子级。
好的,所以除了最后一个元素之外的所有东西的实际值都无关紧要吗?
实际上,到目前为止,一维数组的所有值都无关紧要。我只关心构建树数组。