在php中查找数组键并更改其值或内容?

时间:2009-08-28 02:15:42

标签: php arrays multidimensional-array

给定一个多维数组,你不一定知道结构;如何通过名称搜索密钥并更改或添加其内容?键的值可以是字符串或数组,效果应该以任何方式应用 - 我查看了array_walk_recursive,但它忽略了包含另一个数组的任何内容......

3 个答案:

答案 0 :(得分:2)

这有用吗?

function arrayWalkFullRecursive(&$array, $callback, $userdata = NULL) {
    call_user_func($callback, $value, $key, $userdata);

    if(!is_array($array)) {
        return false;
    }

    foreach($array as $key => &$value) {
        arrayWalkFullRecursive($value);
    }

    return true;
}

arrayWalkFullRecursive($array,
    create_function(                // wtb PHP 5.3
        '&$value, $key, $data',
        'if($key == $data['key']) {
             $value = $data['value'];
         }'
    ),
    array('key' => 'foo', 'value' => 'bar')
);

答案 1 :(得分:1)

PHP中的数组键是整数和字符串。您不能拥有数组数组键。所以是的,array_walk_recursive()就是你想要的。

答案 2 :(得分:0)

来自Arrays

  

键可以是整数或字符串。

数组不能用作键。

要获取数组的键,请使用array_keys