多维数组键值替换

时间:2013-08-26 18:03:42

标签: php arrays multidimensional-array

我有一个数组我正在尝试更改此数组的某些键,但函数对递归的数组失败。

可能有什么问题

任何人都可以解决这个问题吗?

$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')));

1 个答案:

答案 0 :(得分:1)

您忘记将2nd3rd参数传递给内部函数调用:

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;
}