PHP array_diff() Fonksiyonu Nedir, Ne İşe Yarar ve Nasıl Kullanılır?

"PHP array_diff() Fonksiyonu Nedir, Ne İşe Yarar ve Nasıl Kullanılır?"

PHP dilinde dizilerle çalışırken, farklı diziler arasındaki farkları bulmamız gerekebilir. Bu noktada, PHP’nin yerleşik fonksiyonlarından biri olan array_diff() devreye girer. array_diff(), bir diziyi diğer bir dizi veya dizilerle karşılaştırarak sadece ilk dizide olup diğer dizilerde bulunmayan elemanları döndürür.

Bu makalede, array_diff() fonksiyonunun ne olduğu, ne işe yaradığı ve nasıl kullanılacağı hakkında ayrıntılı bilgi verilecektir.


array_diff() Fonksiyonu Nedir?

array_diff() fonksiyonu, iki veya daha fazla dizi arasında farkı bulmamıza yarar. Bu fonksiyon, ilk parametre olarak verilen dizi ile diğer parametrelerde verilen dizileri karşılaştırır ve sadece ilk dizide bulunan, diğer dizilerde bulunmayan değerleri döndürür. Karşılaştırma, dizi elemanlarının değerleri üzerinden yapılır; anahtarlar dikkate alınmaz.

Söz Dizimi:

array_diff(array $array1, array ...$arrays): array
  • $array1: Karşılaştırma yapılacak ana dizi.
  • ...$arrays: Ana dizi ile karşılaştırılacak diğer diziler.

Bu fonksiyon, yalnızca ilk dizide olup diğer dizilerde bulunmayan değerlerin bir dizisini döndürür.


array_diff() Fonksiyonu Ne İşe Yarar?

  • Diziler Arasındaki Farkı Bulmak: Bir dizi ile diğer dizi veya dizilerdeki elemanları karşılaştırarak, sadece ilk dizide olup diğerlerinde bulunmayan elemanları bulmak için kullanılır.
  • Ortak Olmayan Değerleri Ayırmak: Örneğin, bir kullanıcı listesinde olmayan kullanıcıları bulmak veya bir ürün listesinde yeni eklenen ürünleri tespit etmek için kullanılabilir.
  • Listeleme İşlemleri: Bir veri kümesinden belirli değerleri hariç tutarak geriye kalanları bulmak için faydalıdır.

array_diff() Fonksiyonunun Kullanımı

array_diff() fonksiyonunun nasıl çalıştığını anlamak için birkaç örnek inceleyelim.

Örnek 1: Basit Fark Bulma

<?php
$array1 = array("elma", "armut", "çilek");
$array2 = array("armut", "kiraz");

$sonuc = array_diff($array1, $array2);
print_r($sonuc);
?>

Çıktı:

Array
(
    [0] => elma
    [2] => çilek
)

Bu örnekte, $array1 dizisindeki "elma" ve "çilek" elemanları $array2 dizisinde bulunmadığı için döndürülmektedir. "armut" her iki dizide de bulunduğu için sonuçta yer almamaktadır.

Örnek 2: Çoklu Dizi Farkı

<?php
$array1 = array("elma", "armut", "çilek");
$array2 = array("armut", "kiraz");
$array3 = array("çilek", "kiraz");

$sonuc = array_diff($array1, $array2, $array3);
print_r($sonuc);
?>

Çıktı:

Array
(
    [0] => elma
)

Bu örnekte, $array1 dizisindeki "elma" elemanı, hem $array2 hem de $array3 dizilerinde bulunmadığı için sonuç olarak döndürülür. "armut" ve "çilek" diğer dizilerde bulunduğu için sonuçta yer almaz.

Örnek 3: Sayısal Dizilerde Fark Bulma

<?php
$array1 = array(1, 2, 3, 4, 5);
$array2 = array(2, 4, 6);

$sonuc = array_diff($array1, $array2);
print_r($sonuc);
?>

Çıktı:

Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)

Burada, $array1 dizisinde olup $array2 dizisinde olmayan değerler 1, 3 ve 5'tir.


array_diff() ile İlgili Dikkat Edilmesi Gerekenler

  1. Anahtarlar Dikkate Alınmaz: array_diff() sadece dizideki değerleri karşılaştırır, anahtarlar dikkate alınmaz. Eğer hem anahtar hem de değer karşılaştırması yapmak istiyorsanız array_diff_assoc() fonksiyonu kullanılmalıdır.

  2. Case Sensitive (Büyük/Küçük Harf Duyarlılığı): array_diff() büyük/küçük harf duyarlıdır. Örneğin, "Elma" ve "elma" farklı değerler olarak kabul edilir.

<?php
$array1 = array("Elma", "Armut", "Çilek");
$array2 = array("elma", "armut");

$sonuc = array_diff($array1, $array2);
print_r($sonuc);
?>

Çıktı:

Array
(
    [0] => Elma
    [1] => Armut
    [2] => Çilek
)
  1. Çok Boyutlu Dizilerde Kullanımı: array_diff() çok boyutlu dizilerde doğru sonuç vermeyebilir çünkü sadece yüzeysel (tek boyutlu)karşılaştırmayapar. Çok boyutlu dizilerde fark bulmak için diziyi düzleştirmeniz gerekebilir.


array_diff() ve Benzeri Fonksiyonlar

  • array_diff_assoc(): Hem anahtarları hem de değerleri karşılaştırır.
  • array_diff_key(): Sadece dizilerin anahtarlarını karşılaştırır.
  • array_intersect(): İki veya daha fazla dizide ortak olan elemanları döndürür.
  • array_udiff(): Kullanıcı tanımlı bir fonksiyonla dizileri karşılaştırır.

Gerçek Hayattan Bir Kullanım Örneği

Bir veritabanında bulunan kayıtlarla, kullanıcıdan gelen veri listesi arasındaki farkı bulmak için array_diff() kullanabilirsiniz.

<?php
$veritabanindakiKullanicilar = array("ali", "veli", "ayşe");
$formdanGelenKullanicilar = array("ali", "mehmet");

$eksikKullanicilar = array_diff($veritabanindakiKullanicilar, $formdanGelenKullanicilar);

print_r($eksikKullanicilar);
?>

Bu örnekte, "veli" ve "ayşe" kullanıcısının formdan gelen listede yer almadığı tespit edilir.


array_diff() fonksiyonu, PHP dilinde diziler arasındaki farkları bulmak için oldukça faydalı bir araçtır. Dizilerde bulunmayan elemanları filtrelemek, listeleri karşılaştırmak ve farklılıkları analiz etmek için idealdir. Doğru kullanım senaryolarında oldukça güçlü sonuçlar verebilir.

Aykhan Gasimzade Aykhan Gasimzade verified icon
Full Stack Developer

Merhaba! Ben Aykhan, 1999 doğumlu bir Azerbaycanlıyım ve 2017 yılından bu yana programlamayla ilgileniyorum. Teknolojinin büyülü dünyası beni her zaman etkilemiştir ve bu merakımı kendi blogumda paylaşarak daha geniş bir kitleyle buluşturmayı amaçlıyorum.