İki Dizi Arasında Anahtar ve Değer Kuralı Belirleyerek Fark Bulma

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.