Найти ключ массива в php и изменить его значение или содержимое? - PullRequest
1 голос
/ 28 августа 2009

Учитывая многомерный массив, который вы не обязательно знаете структуру; как можно найти ключ по имени и изменить или добавить его содержимое? Значение ключа может быть либо строкой, либо массивом, и эффекты должны применяться в любом случае - я смотрел на array_walk_recursive, но он игнорирует все, что содержит другой массив ...

Ответы [ 3 ]

2 голосов
/ 28 августа 2009

Это работает?

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 голос
/ 28 августа 2009

Ключи массивов в PHP - это целые числа и строки. Вы не можете иметь ключ массива массива. Так что да, array_walk_recursive() это то, что вы хотите.

0 голосов
/ 28 августа 2009

С Массивы :

Ключ может быть целым числом или строкой.

Массивы нельзя использовать в качестве ключей.

Чтобы получить ключи массива, используйте array_keys .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...