Let's say I have an array like this:
$myArray = array(
'a' => 'alpha',
'b' => array(
'Z' => 'zulu' )
);
I'd like to search for the key 'Z' and replace its value.
I've tried iterators, foreach loops, etc but no luck.
* Amended syntax.
You can pass a reference to array_walk_recursive:
$myArray = array(
'a' => 'alpha',
'b' => array(
'Z' => 'zulu' )
);
$newvalue = 'zebra';
array_walk_recursive($myArray, function(&$value, $key) use($newvalue){
if($key=='Z'){
$value = $newvalue;
}
});
print_r($myArray);
example: http://codepad.viper-7.com/ajsYEn
<?php
$myArray = array(
'a' => 'alpha',
'b' => array (
'Z' => 'zulu'
),
);
foreach($myArray as $key => $value) {
if (is_array($value)) {
foreach($value as $k => $v) {
if ($k == 'Z')
{
//do something
$myArray[$key]['newKey'] = $v;
unset($myArray[$key][$k]);
}
}
}
}
print_r($myArray);
Output:
Array
(
[a] => alpha
[b] => Array
(
[newKey] => zulu
)
)
You can use array_walk_recursive
and pass by reference:
array_walk_recursive($myArray, function(&$item, $key) {
if ($key == 'Z') $item = "hi";
});
http://sandbox.onlinephpfunctions.com/code/ad750cbb5b30b87f9e6068ba15420cf924ed5a7b