Not:
1-) Fonksiyon içinde kural sorgularken değerleri aynıysa “==” , hem değerleri hem anahtarları aynıysa “===” kullanılır.
2-) array_diff_uassoc anahtar ve değer farkını birlikte işlerken, array_udiff sadece değer farkını işler.
Aşağıda anahtar isimleri adi,yas,soyadi olan değer örnekleri işlenmiştir.
array_diff_uassoc
<?php
$dizi1 = array("adi" => "Mehmet","yas" => "30", "soyadi" => "Ulusan");
$dizi2 = array("adi" => "Mehmet", "soyadi" => "Ulutan","30");
$cikti = array_diff_uassoc($dizi1, $dizi2, function ($d1,$d2){
if($d1 === $d2){ /* hem değerleri hem anahtarları aynı olursa*/
return false; /*aynı olanları yazdırmasın istiyoruz*/
}else{
return true; /* kurala göre farklı olanları döndürüyoruz */
}
});
print_r($cikti);
?>
Çıktısı
Array( [yas] => 30 [soyadi] => Ulusan )
Yukarıki Çıktının Sebebi
1.Diger dizide yas anahtarı yok idi
2.Diğer dizide soyadinin değeri farklı idi
array_udiff
<?php
$dizi1 = array("adi" => "Mehmet","yas" => "30", "soyadi" => "Ulusan");
$dizi2 = array("adi" => "Mehmet", "soyadi" => "Ulutan","30");
$cikti = array_udiff($dizi1, $dizi2, function ($d1,$d2){
if($d1 === $d2){ /* hem değerleri hem anahtarları aynı olursa*/
return false; /*aynı olanları yazdırmasın istiyoruz*/
}else{
return true; /* kurala göre farklı olanları döndürüyoruz */
}
});
print_r($cikti);
?>
Çıktısı
Array([soyadi] => Ulusan)
Yukarıki Çıktının Sebebi
1.Diğer dizide soyadinin değeri farklı idi
2.Diğer dizide yas anahtarı yok idi ama bu fonksiyon anahtara değil değere baktığı için 30lar eşleşip yok oldu.