Facebook gruplarında birçok kez sorulduğunu gördüğüm için array_diff()
fonksiyonunun kullanım şeklini paylaşmak istiyorum. Aslında daha detaylı php dersleri ekleyeceğim fakat böyle zamanım oldukca kısa da olsa paylaşmanın bir zararı olmaz herhalde 🙂
Diyelim elinizde iki dizi var.
$array1 = array(1, 2, 3, 4,6);
$array2 = array(1, 3,7);
Bu dizilerde tekrar etmeyen değerleri bulmanız gerekiyorsa array_diff()
fonksiyonunu kullanabilirsiniz. Kullanım şekli aslında array_diff(array1, array2, array3...)
şeklindedir.
array_diff($array1, $array2)
Yukarıdaki şekilde tekrar etmeyen değerleri almış olursunuz. Fakat burada dikkat edilmesi gerek bir husus var. birinci dizide bulunan değerlerden ikinci dizide tekrar etmeyenleri bulacaktır. İkinci dizideki tekrar etmeyen değerleri vermeyecektir. Yani sonuç şöyle olacak (2,4,6):
$array1 = array(1, 2, 3, 4,6);
$array2 = array(1, 3,7);
print_r(array_diff($array1, $array2));
//Sonuç: Array ( [1] => 2 [3] => 4 [4] => 6 )
Gördüğünüz gibi ikinci dizideki tekrar etmeyen 7 değerini sonuç olarak göstermedi. 7 değerini almak için şu şekilde kullanmak gerekiyor:
$array1 = array(1, 2, 3, 4,6);
$array2 = array(1, 3, 7);
print_r(array_diff($array2, $array1));
//Sonuç: Array ( [2] => 7 )
Bu sefer de sadece 7 değerini alabildik. Her iki dizideki tekrar etmeyen değerleri almak için aldığımız sonuçları birleştirmemiz gerekiyor. Bunun için de array_merge()
fonksiyonunu kullanabiliriz.
Yani aslında kodumuzu şöyle yazabiliriz:
$array1 = array(1, 2, 3, 4,6);
$array2 = array(1, 3, 7);
$output = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
print_r($output);
//Sonuç: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 7 )
Kodumuzu bu şekilde yazdığımızda tam olarak istediğimiz sonucu yani 2,4,6,7 değerlerini almış olduk.