假設我有一個一維陣列$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