If my array looks like:
JavaScript
x
$array['foo']['bar']['this'] = 'something';
Array
(
[foo] => Array
(
[bar] => Array
(
[this] => something
)
)
)
How do I change the value of [this] from something to something_else? The array can always have different keys. Other examples:
JavaScript
$array1['test']['that'] = 'something';
$array2['yet']['a']['deeper']['example'] = 'something';
I want to change the last inner key. The results should be:
JavaScript
Array
(
[foo] => Array
(
[bar] => Array
(
[this] => something_else
)
)
)
Array
(
[test] => Array
(
[this] => something_else
)
)
Array
(
[yet] => Array
(
[a] => Array
(
[depper] => Array
(
[example] => something_else
)
)
)
)
Advertisement
Answer
You can use a recursive call and access the array using a reference:
JavaScript
<?php
function recursiveCall(array &$array, $newValue) {
foreach ($array as $key => &$value) {
if (is_array($value)) {
recursiveCall($value, $newValue);
} else {
$value = $newValue;
}
}
}
$array['foo']['bar']['this'] = 'something';
print_r($array);
recursiveCall($array, 'tralala');
print_r($array);
?>
Output:
JavaScript
//input array
Array
(
[foo] => Array
(
[bar] => Array
(
[this] => something
)
)
)
//output array
Array
(
[foo] => Array
(
[bar] => Array
(
[this] => tralala
)
)
)
This would work with any dimension and any key
name.