Php dizi anahtarını bulun ve değerini veya içeriğini değiştirmek?

3 Cevap php

Eğer mutlaka yapısını bilmiyorum çok boyutlu bir dizi verilen; nasıl bir isim ve değişim ile bir anahtar için arama ya da içeriği bulunuyor eklersiniz? Anahtarın değeri bir dize veya bir dizi ve etkileri iki şekilde uygulanması gerektiğini de olabilir - Ben array_walk_recursive bakmış, ama başka bir dizi içeren bir şey yok sayar ...

3 Cevap

Bu çalışır mı?

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

PHP Dizi anahtarlar ints ve dizeleri vardır. Bir dizi dizi anahtarı olamaz. Yani evet, array_walk_recursive() istediğiniz şeydir.

Dan Arrays:

Bir anahtar bir tamsayı ya da bir dize olabilir.

Diziler anahtar olarak kullanılamaz.

Bir dizinin anahtarlarını almak kullanmak için array_keys.