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.