İ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.

Sizin Değerli Görüşlerinize İhtiyacımız Var.