I have a dynamically generated PHP multi-dimensional array as follows:
Array (
[uid_1] => Array (
[sub_1] => Array (
[sub_sub_1] => Array (
[id1] => "val_1",
[id2] => "val_2"
)
)
[sub_2] => Array (
[sub_sub_1] => Array (
[id1] => "val_1",
[id2] => "val_2"
),
[sub_sub_2] => Array (
[id3] => "val_3",
[id4] => "val_4"
)
)
)
)
The array is much bigger and will contain multiple [uid], [sub] and [sub_sub].
Note that while [uid] and [sub] are unique, [sub_sub] are not.
Is it possible to add [id5] => "val_5" to all instances of [sub_sub_1] without using loops and without knowing the value of [uid_1] and [sub_2]?
3
Answers
Since You mentioned The array is much bigger, Loop may be needed.
Try the following code.
Output:
Notes:
The
RecursiveArrayIterator
visits every top node of the array. TheRecursiveIteratorIterator
wraps theRecursiveArrayIterator
and will visit every node of the array, not just the top nodes. AndsetMaxDepth
makes sure we do not waste time visiting nodes more than three level deep.We iterate, check for the key being ‘sub_sub_1’, and if true, we grab the parent path parts
getSubIterator->key
. And then we just create the key and assign the value.