PHP dizileri karşılaştırma yapmak birçok hazır PHP dizi fonksiyonları mevcuttur. Bu yazıda PHP iki diziyi karşılaştırma veya ikiden fazla diziyi karşılaştırma yapmak için kullanılabilecek bu fonksiyonları ayrıntılı bir şekilde göreceğiz.
array_intersect()
fonksiyonu
PHP dizileri karşılaştırma ve dizide ortak elemanları bulma işlemi array_intersect fonksiyonu ile kolayca gerçekleştirilebilir. Karşılaştırılacak array değerleri fonksiyon parametreleri olarak tanımlanmalı. Böylece array verileri karşılaştırılır ve ortak elemanları array_intersect fonksiyonu kullanımı ile dizi olarak döndürülür. Dizideki bir eleman, diğer bütün dizilerde olur ise ortak eleman eleman sayılır. PHP array_intersect kullanımı aşağıdaki gibidir.
$ulkeler = array(
'Hindistan',
'Pakistan',
'Somali',
'Arjantin'
);
$ulkeler2 = array(
'Çin',
'Hindistan',
'ABD',
'Endonezya',
'Pakistan'
);
$ulkeler3 = array(
'Gazneli',
'Babür',
'Adilşahlar',
'Hindistan',
'Pakistan'
);
print_r(array_intersect($ulkeler,$ulkeler3,$ulkeler2));
/*
--çıktı--
Array (
[0] => Hindistan
[1] => Pakistan
)
*/
array_intersect_assoc()
fonksiyonu
Array_intersect fonksiyonu gibi parametresine eklenen dizileri karşılaştırır ve ortak olan elemanları bulur. Ancak karşılaştırma işlemi yapılırken dizinin hem anahtar (indis) eşitliğine hem de eleman eşitliğine göre kıyaslama yapar. Bu fark haricinde array_intersect ile aynı işlevi görür ve kullanımı aynıdır. PHP array_intersect_assoc kullanımı aşağıdaki gibidir.
$buyuk_sehirler = array(
'İstanbul',
'Ankara',
'Konya'
);
$turistik_sehirler = array(
'Antalya',
'Van',
'Konya'
);
print_r(array_intersect_assoc($buyuk_sehirler,$turistik_sehirler));
/*
--çıktı--
Array (
[2] => Konya
)
*/
array_intersect_key()
fonksiyonu
PHP dizileri kıyaslama işlemini sadece anahtarlara (indislere) göre yapan fonksiyondur. İlk parametredeki dizi içerisindeki elemanların anahtarları, ikinci ve üçüncü parametrelerdeki dizilerdeki elemanların anahtarları ile kıyaslanır ve ortak anahtara sahip olan elemanlar dizi olarak geriye döndürülür. PHP array_intersect_key fonksiyonu kullanımı aşağıdaki gibidir.
$diller = array(
'0' => 'PHP',
'1' => 'ASPNET',
'2' => 'C#',
'3' => 'JAVA'
);
$diller2 = array(
'3' => 'JAVA Proğramlama Dili',
'0' => 'PHP Web Proğramlama Dili',
'4' => 'Dil'
);
print_r(array_intersect_key($diller,$diller2));
/*
--çıktı--
Array (
[0] =>
PHP [3] => JAVA
)
*/
array_diff() fonksiyonu
PHP dizileri karşılaştırma ve dizide ortak olmayan elemanı bulma işlemini gerçekleştirir. Fonksiyonun ilk parametresine eklenecek dizideki elemanların fonksiyonun ikinci ve sonraki parametrelerine eklenecek dizilerde yok ise yani bir dizinin diğer dizilerde ortak olmayan elemanları anahtarları ve değerleri ile bir dizi haline getirip geri döndürür. PHP array_diff fonksiyonu kullanımı aşağıdaki gibidir.
$avrupa = array(
'İngiltere',
'Fransa',
'Türkiye'
);
$asya = array(
'Çin',
'Rusya',
'Türkiye'
);
$dizi1 = array(15, 25, 35, 45, 55);
$dizi2 = array(12, 22, 35, 42, 55);
$dizi3 = array(52, 15, 45, 35, 22);
print_r(array_diff($asya,$avrupa)); //çıktı: Array ( [0] => Çin [1] => Rusya )
print_r(array_diff($dizi1,$dizi2)); //çıktı: Array ( [0] => 15 [1] => 25 [3] => 45 )
print_r(array_diff($dizi1,$dizi2,$dizi3)); //çıktı: Array ( [1] => 25 )
array_diff_assoc()
fonksiyonu
PHP dizi karşılaştırma işlemini hem anahtarları üzerinden hem de değerleri üzerinden karşılaştırma yapar. Fonksiyonun birinci parametresine tanımlanan dizi içerisindeki elemanlar, ikinci ve diğer parametrelerindeki dizinin elemanlarıyla hem anahtar eşitliğine hem de eleman eşitliğine göre kıyaslanır. Bu eşitliğe uymayan farklı değerler bulunur ve fonksiyon tarafından dizi halinde döndürülür.
Mesela ilk dizide 3. indisli “Ahmet” değeri bulunmakta. Diğer dizide de 3. indiste bulunan elemanın değeri “Ahmet” ise elemanı ve anahtarı eşit değerler olmuş olur. Array_diff_assoc fonksiyonu bu tip eşitliğin tersini arayan bir kıyaslama yapar. Yani iki dizide anahtarı ve değeri farklı olan elemanları getirir. PHP array_diff_assoc fonksiyonu kullanımı aşağıdaki gibidir.
$sayilar = array(1,2,3,4,5);
$tekil_sayilar = array(1,3,5,7,9);
print_r(array_diff_assoc($sayilar,$tekil_sayilar)); //çıktı: Array ( [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
array_diff_key() fonksiyonu
PHP dizi karşılaştırma işlemini sadece anahtarlar üzerinden yapan ve ilk dizide olup ikinci dizide olmayan, ortak olmayan elemanların anahtar ve değerlerini dizi olarak getirir. PHP array_diff_key fonksiyonu kullanımı aşağıdaki gibidir.
$dizi = array(
'birinci' => 'Elma',
'ikinci' => 'Armut',
'ucuncu' => 'Portakal',
'dorduncu' => 'Kivi'
);
$dizi2 = array(
'ikinci' => 'Zencefil',
'besinci' => 'Greyfurt',
'birinci' => 'İncir'
);
print_r(array_diff_key($dizi,$dizi2));
/*
--çıktı--
Array (
[ucuncu] => Portakal
[dorduncu] => Kivi
)
*/