一个简单的递归函数应该做到:
/**
* @param $array [mix] The original array
* @param $skey [string] The key name you want to replace
* @param $replace [mix] The new value you want assign
*/
function recurse($array, $skey, $replace)
{
# I would convert objects to arrays, it's just easier to not have to
# deal with a mix (in my opinion)
if(is_object($array))
$array = (array) $array;
# Just send value back if not an array
if(!is_array($array))
return $array;
# Loop array, try to match. No match, recurse
foreach($array as $key => $value)
$array[$key] = ($skey === $key)? $replace : recurse($value, $skey, $replace);
# Return each array
return $array;
}
使用:
$original_array = recurse($original_array, 'custom_image', $repacement_value);