(PHP 5, PHP 7)
array_diff_uassoc — Dizilerin farkını hesaplarken ek olarak bir geriçağırım işlevi üzerinden indisleri de karşılaştırır
$dizi1
, array $dizi2
[, array $...
], callable $anh_karş_işlevi
) : array
dizi1
ile dizi2
'yi
karşılaştırır ve farkı döndürür. Değerler yerine anahtarları
karşılaştırması dışında array_diff() işlevi gibidir.
array_diff_assoc() işlevinden farklı olarak anahtarları karşılaştırmak için bir dahili işlev değil, kullanıcı tanımlı bir geriçağırım işlevi kullanılır.
dizi1
Karşılaştırılacak dizi.
dizi2
Karşılaştırılacak diğer dizi.
...
Karşılaştırılacak diğer diziler.
anh_karş_işlevi
Karşılaştırma işlevinin, ilk bileşeninin ikinci bileşenden küçük, eşit veya büyük olması durumunda sıfırdan küçük, eşit veya büyük bir tamsayı döndürmesi gerekir. Dikkat: PHP 7.0.0 öncesinde bu tamsayı -2147483648 ile 2147483647 arasında olmalıdır.
Diğer tüm değiştirgelerde mevcut olmayan dizi1
girdilerinden oluşan bir dizi döner.
Örnek 1 - array_diff_uassoc() örneği
"a" => "green" çifti her iki dizide de mevcut olduğundan bu eleman çıktıda bulunmaz. 0 => "red" çifti ise aksine, ikinci "red" değeri 1 anahtarına sahip olduğundan çıktıda bulunur.
<?php
function anh_karş_işlevi($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$dizi1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$dizi2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($dizi1, $dizi2, "anh_karş_işlevi");
print_r($result);
?>
Yukarıdaki örneğin çıktısı:
Array ( [b] => brown [c] => blue [0] => red )
İki indisin eşitliğine kullanıcı tarafından sağlanmış geriçağırım işlevi tarafından bakılır.
Bilginize:
Bu işlev n boyutlu bir dizinin sadece bir boyutunu karşılaştırır. Daha derinliğine karşılaştırmalar yapmak için array_diff_uassoc($dizi1[0], $dizi2[0], 'anh_kars_islevi'); sözdizimini kullanabilirsiniz.