$arr
次のような1 次元配列があるとします。
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 個の要素を持つ 1 次元配列があるとします。$bar
上記の出力と同様に、10 次元配列に展開される別の配列を生成する必要があります。
foreach
ループ内で何をすべきですか?または、ループを使用する代わりに、1 次元配列から上記のような出力を生成する方法はありますか?
編集:
明らかにある種の再帰関数が必要ですが、表示するデータに基づいて、key2 が key1 の子である必要があること、key3 が key2 の子である必要があることなどをどのように知っているか説明できますか?
1D 配列の次の要素は、前の要素の子です。したがって、1D 配列が次のような場合:
Array
(
['bar'] => 1 // I don't care of the values as of the moment
['foo'] => 1
['baz'] => 1
)
要素foo
は の子である必要がbar
あり、要素はツリー配列のbaz
の子である必要があります。foo
わかりましたので、最後の要素を除くすべての実際の値は無関係ですか?
実際には、1D 配列のすべての値は現時点では無関係です。私はツリー配列の構築にのみ関心があります。