PHP’de 2 Dizin-Array-Küme Arasındaki Farkı ve Ortak Elemanları Bulma

Son güncelleme : Ocak 27, 2019


PHP’de çok kullanılmayan, benim de var olup olmadığıdan emin olamadığım ve bir süre araştırdıktan sonra denk geldiğim 2 fonksiyon var:

array_diff  ve array_intersect :
PHP 2 Dizin Array Küme Karşılaştırma Farkı Bulma Kod
Bu fonksiyonlar, 2 Dizin / Array ya da Küme arasındaki farkı ve ortak elemanları bulmaya yarıyor.
Aslında oldukça yararlı ve zaman kazandıran fonksiyonlar.

  • array_diff  ile 2 dizin / array veya kümeyi karşılaştırıyoruz ve farklı elemanları buluyoruz. Başka bir deyişle; array elemanlarını başka bir array içinde arama işlemini gerçekleştiriyoruz.
  • array_intersect ile 2 dizin / array veya kümenin ortak elemanlarını buluyoruz.

Aşağıdaki örnek kodu ve çıkan sonucu inceleyerek bu fonksiyonların kullanımını çok kolayca anlayabilirsiniz.
Kodu takip ederken şu noktalara dikkatinizi çekmek isterim (belki kafanıza takılan sorular olabilir) :

  • 2 küme / array / dizin karşılaştırması yapılırken küme elemanları hem sayılardan, hem de harflerden oluşabilir.
  • Sayıların küçükten büyüğe vs. belli bir sırada yazılması gerekmez, karşılaştırma tüm elemanlar arasında karışık yapılır.
  • array_diff   için karşılaştırma mantığı şöyle: 1. dizin elemanları,  2. dizinde var mı diye bakılır. Yani 1. ve 2. dizini fonksiyone yerleştirme sırası önemlidir! 
    Aşağıdaki örnekle elde edebileceğiniz karşılaştırma sonuçları şöyle;
  • 1. Array’de bulunan ama 2.Array’de bulunmayan hangi farklı elemanlar var?
  • 1. ve 2. kümenin ortak / kesişen elemanları – her iki kümede de bulunan elemanlar hangileridir? 
  • 1. Array’deki TÜM elemanlar 2. Array’de de VAR mı ? 
  • 1. ve 2. Array’deki elemanların HEPSİ birbirinden FARKLI mı?
    (Veya HİÇ ORTAK eleman YOK mu?)

Kod:

[php] <?php

$a1=array(99, 3, 76, 22, Elma, Armut);
$a2=array(5, Muz);
$a3=array(12, 63, Armut);
$a4=array(4, 12, 22, 42, 55, 63, 76, 99, Armut);

$fark14=array_diff($a1,$a4);
$fark24=array_diff($a2,$a4);
$fark34=array_diff($a3,$a4);

$ortak14=array_intersect($a1,$a4);
$ortak24=array_intersect($a2,$a4);
$ortak34=array_intersect($a3,$a4);

echo "1. Dizin Elemanları: 99, 3, 76, 22, Elma, Armut<br><br>";
echo "2. Dizin Elemanları: 5, Muz<br><br>";
echo "3. Dizin Elemanları: 12, 63, Armut<br>";
echo ‘<p style="color: red;">’."<b><i>4. Dizin Elemanları: 4, 12, 22, 42, 55, 63, 76, 99, Armut</b></i><br>".'</p>’;
echo "<hr>";
echo "<b> 1. Dizin <> 4. Dizin – FARKLI ELEMAN araması sonucu: </b><br>";
if ($fark14 == null)
{
echo ‘<x style="color: #FF00BF;">’."<b><i>1. Dizindeki TÜM elemanlar, 4. Dizinde de VAR!</i></b></x>";
}
else
{
echo "<i>1. Dizinde olan, 4. Dizinde bulunmayan elemanlar şöyle:</i><br>";
print_r ($fark14);
}
if (sizeof($fark14) == sizeof($a1))
{
echo ‘<x style="color: #FF00BF;">’."<br><i><b>1. ve 4. Dizindeki TÜM elemanlar FARKLI!</i></b></x>";
}
echo "<br><hr>";
echo "<b> 2. Dizin <> 4. Dizin – FARKLI ELEMAN araması sonucu: </b><br>";
if ($fark24 == null)
{
echo ‘<x style="color: #FF00BF;">’."<b><i>2. Dizindeki TÜM elemanlar, 4. Dizinde de VAR!</i></b></x>";
}
else
{
echo "<i>2. Dizinde olan, 4. Dizinde bulunmayan elemanlar şöyle:</i><br>";
print_r ($fark24);
}
if (sizeof($fark24) == sizeof($a2))
{
echo ‘<x style="color: #FF00BF;">’."<br><i><b>2. ve 4. Dizindeki TÜM elemanlar FARKLI!</i></b></x>";
}
echo "<br><hr>";
echo "<b> 3. Dizin <> 4. Dizin – FARKLI ELEMAN araması sonucu: </b><br>";
if ($fark34 == null)
{
echo ‘<x style="color: #FF00BF;">’."<b><i>3. Dizindeki TÜM elemanlar, 4. Dizinde de VAR!</i></b></x>";
}
else
{
echo "<i>3. Dizinde olan, 4. Dizinde bulunmayan elemanlar şöyle:</i><br>";
print_r ($fark34);
}
if (sizeof($fark34) == sizeof($a3))
{
echo ‘<x style="color: #FF00BF;">’."<br><i><b>3. ve 4. Dizindeki TÜM elemanlar FARKLI!</i></b></x>";
}
echo "<br><hr>";
echo "<b>1. ve 4. Dizinde ORTAK bulunan ELEMAN araması sonucu: </b><br>";
if ($ortak14 == null)
{
echo ‘<x style="color: blue;">’."<b><i>1. ve 4. Dizinde HİÇ ortak eleman YOK!</i></b></x>";
}
else
{
echo "<i>Hem 1. hem de 4.Dizinde bulunan elemanlar şöyle:</i><br>";
print_r ($ortak14);
}
if (sizeof($ortak14) == sizeof($a1))
{
echo ‘<x style="color: blue;">’."<br><i><b>1. ve 4. Dizinde TÜM elemanlar ORTAK!</i></b></x>";
}
echo "<br><hr>";
echo "<b>2. ve 4. Dizinde ORTAK bulunan ELEMAN araması sonucu: </b><br>";
if ($ortak24 == null)
{
echo ‘<x style="color: blue;">’."<b><i>2. ve 4. Dizinde HİÇ ortak eleman YOK!</i></b></x>";
}
else
{
echo "<i>Hem 2. hem de 4.Dizinde bulunan elemanlar şöyle:</i><br>";
print_r ($ortak24);
}
if (sizeof($ortak24) == sizeof($a2))
{
echo ‘<x style="color: blue;">’."<br><i><b>2. ve 4. Dizinde TÜM elemanlar ORTAK!</i></b></x>";
}
echo "<br><hr>";
echo "<b>3. ve 4. Dizinde ORTAK bulunan ELEMAN araması sonucu: </b><br>";
if ($ortak34 == null)
{
echo ‘<x style="color: blue;">’."<b><i>3. ve 4. Dizinde HİÇ ortak eleman YOK!</i></b></x>";
}
else
{
echo "<i>Hem 3. hem de 4.Dizinde bulunan elemanlar şöyle:</i><br>";
print_r ($ortak34);
}
if (sizeof($ortak34) == sizeof($a3))
{
echo ‘<x style="color: blue;">’."<br><i><b>3. ve 4. Dizinde TÜM elemanlar ORTAK!</i></b></x>";
}
echo "<hr>";
?>
[/php]


Sonuç Ekran Görüntüsü:
PHP 2 Dizin Array Küme Arasındaki Farkı Ortak Elemanları Bulma



Bir cevap yazın