Biraz basit bir PHP dizi kavşak soru

3 Cevap php

Belki deli gidiyorum, ama ben argüman olarak iki dizileri aldı, bir PHP çekirdek işlevi olduğunu yemin edebilirim:

$a = array('1', '3');
$b = array('1'=>'apples', '2'=>'oranges', '3'=>'kiwis');

Ve diziden değerleri $a dizideki tuşları ile çarpışmalar için kontrol edilir bir kavşak gerçekleştirir $b. Gibi bir şey dönen

array('1'=>'apples', '3'=>'kiwis');

Böyle bir işlev (ben belgelerinde hangi cevapsız) var, ya da aynı şey elde etmek için bir çok optimize edilmiş bir yolu var mı?

3 Cevap

Ne istediğinizi% 100 net değilim. Eğer $ b ANAHTARLIĞI karşı $ a değerleri kontrol etmek istiyor musunuz?

Birkaç intersect fonksiyonları vardır:

http://php.net/manual/en/function.array-intersect.php http://www.php.net/manual/en/function.array-intersect-key.php

Ama muhtemelen gerekir:

http://www.php.net/manual/en/function.array-intersect-ukey.php Eğer tuşları ve / veya eşleşen değerleri için kendi işlevi tanımlayabilirsiniz böylece.

Yapılacak basit bir foreach İlk dizi yineleme ve ikinci diziden gelen değerleri almak için:

$output = array();
foreach ($a as $key) {
    if (array_key_exists($key, $b)) {
        $output[$key] = $b[$key];
    }
}

Tuşların üzerinde testler sadece döngü girmeden önce yapılır gibi Gumbo cevap sadece bir varyasyon, daha verimli olmalıdır.

$intersection = array_intersect($a, array_keys($b));
$result=array();
foreach ($intersection as $key) {
    $result[$k]=$b[$k];
}