Using PHP Version 5.2.9-2 on Win 32
For those wondering what happens with numeric keys, here's a short example that might save you time :
<?php
$a=array(1=>'a',2=>'b',3=>'c');
$b=array(2=>'z',3=>'c',4=>'d');
$c=array_intersect_key($a,$b);
print_r($c);
?>
Will output
Array
(
[2] => b
[3] => c
)
It works fine, if values are different, the first array's ones are retained.
array_intersect_ukey
(PHP 5 >= 5.1.0)
array_intersect_ukey — Anahtarları karşılaştırmak için bir geriçağırım işlevi kullanarak dizilerin kesişimini hesaplar
Açıklama
$dizi1
, array $dizi2
[, array $...
], callback $anh_karş_işlevi
)
array_intersect_ukey() işlevi tüm değiştirgelerinde
mevcut olan ve anahtarları eşleşen tüm dizi1
değerlerini içeren bir dizi döndürür.
Karşılaştırma için kullanıcı tarafından sağlanan bir geriçağırım işlevi kullanılır. İşlev, ilk değiştirgenin ikinciden büyük, küçük veya ikinciye eşit olması durumlarında sırayla sıfırdan büyük, küçük bir değer veya sıfır döndürmelidir.
Değiştirgeler
-
dizi1 -
Diğer dizilerin karşılaştırılacağı ilk dizi.
-
dizi2 -
İlk dizi ile karşılaştırılacak dizi.
-
... -
İlk dizi ile karşılaştırılacak diğer dizilerin değişkenlerinin listesi.
-
anh_karş_işlevi -
Kullanıcı tarafından sağlanmış, karşılaştırma için kullanılacak işlevin ismi.
Dönen Değerler
Anahtarları tüm değiştirgelerde mevcut
dizi1 değerlerini içeren bir dizi döndürür.
Örnekler
Örnek 1 - array_intersect_ukey() örneği
<?php
function anh_kars_islevi($a1, $a2)
{
if ($a1 == $a2)
return 0;
else if ($a1 > $a2)
return 1;
else
return -1;
}
$dizi1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$dizi2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_intersect_ukey($dizi1, $dizi2, 'anh_kars_islevi'));
?>
Yukarıdaki örneğin çıktısı:
array(2) {
["blue"]=>
int(1)
["green"]=>
int(3)
}
Örnekte gördüğünüz gibi her iki dizide de sadece 'blue'
ve 'green' anahtarları ortak olduğundan dönen dizi
sadece bu elemanları içermektedir. Ayrıca, dizilerde
'blue' ve 'green' anahtarlı
elemanların değerlerinin farklı oluşuna da dikkat ediniz. Sadece
anahtarlara bakıldığından bir eşleşme oluşmakta ve sadece
dizi1 dizisindeki değerler döndürülmektedir.
Ayrıca Bakınız
- array_diff() - Dizilerin farkını hesaplar
- array_udiff() - Veri karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı bulur
- array_diff_assoc() - Dizilerin farkını hesaplarken ek olarak indisleri de karşılaştırır
- array_diff_uassoc() - Dizilerin farkını hesaplarken ek olarak bir geriçağırım işlevi üzerinden indisleri de karşılaştırır
- array_udiff_assoc() - Veri karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı indislerine de bakarak bulur
- array_udiff_uassoc() - Veri ve indis karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı indislerine de bakarak bulur
- array_diff_key() - Dizilerin farkını hesaplarken indisleri karşılaştırır
- array_diff_ukey() - Karşılaştırma için bir geriçağırım işlevi kullanarak dizilerin farkını hesaplar
- array_intersect() - Dizilerin kesişimini hesaplar
- array_intersect_assoc() - Dizilerin kesişimini hesaplarken ek olarak indisleri de karşılaştırır
- array_intersect_uassoc() - Dizilerin kesişimini hesaplarken ek olarak bir geriçağırım işlevi üzerinden indisleri de karşılaştırır
- array_intersect_key() - Karşılaştırma için anahtarları kullanarak dizilerin kesişimini hesaplar
