我有一个数组我正在尝试更改此数组的某些键,但函数对递归的数组失败。
可能有什么问题
任何人都可以解决这个问题吗?
$array = array(
array(
'tag' => 'div',
'class' => 'lines',
array(
'tag' => 'div',
'repeat' => array(
'tag' => 'div',
array(
'tag' => 'span',
'style' => 'margin:10px; padding:10px',
'key' => 'title',
),
'key' => 'subject',
)
)
)
);
function update_recursively($array, $key = '', $value = array()) {
//print_r($array); print_r($value);
foreach ($array as $k => $v) {
if ($k === $key){
$array[$k] = $value;
}
elseif (is_array($v))
$array[$k] = update_recursively($v);
}
return $array;
}
print_r(update_recursively($array, 'repeat', array('d' => 'a')));
答案 0 :(得分:1)
您忘记将2nd
和3rd
参数传递给内部函数调用:
function update_recursively($array, $key = '', $value = array()) {
//print_r($array); print_r($value);
foreach ($array as $k => $v) {
if ($k === $key){
$array[$k] = $value;
} elseif (is_array($v)) {
$array[$k] = update_recursively($v, $key, $value); // Here
}
}
return $array;
}