Merhaba arkadaşlar,

Bildiğiniz gibi her programalama dilinde işimizi kolaylaştıran fonksiyonlar bulunmaktadır. Biz yazılımcılar da genelde işimize lazım olan bir fonksiyon olduğunda ilk etapta "bunun hazır fonksiyonu var mı" diye araştırırız yoksa kendimiz fonkiyon veya class yazarız.

Burada bahsedeceğimiz konu ise php ile iki array (dizi)'yi birleştirmek. Sonuç olarak ise kimi zaman fonksiyona gerek olmayabileceğini anlatmak.

Burada asıl bahsetmeye çalışacağım konu multi dimensional arrayları birleştirirken key değerlerini kaybetmemek ama ilk etapta array birleştirmeyi anlatacağım.

Bunun için php'de kullanabileceğiniz fonksiyon array_merge fonksiyonudur.

Örnek yapmak gerekirse;

<?php
$arr1 = Array("merdincz", "test", "test2");
$arr2 = Array("array", "merge", "fonksiyon");
$arrResult = array_merge($arr1, $arr2);
print_r($arrResult);
?>

Dediğinizde size sonuç olarak;

Array ( [0] => merdincz
[1] => test
[2] => test2
[3] => array
[4] => merge
[5] => fonksiyon )


Döner ve array'ı birleştirir.

Örneği biraz değiştirelim ve çift katmanlı bir array oluşturalım.

<?php
$arr1 = Array(12 => Array("merdincz", "test", "test2"), 18 => Array("ilk array", "ikinci", "katman"));
$arr2 = Array(13 => Array("ikinci", "array", "ilk katman"), 11 => Array("ikinci array", "ikinci", "katman"));
$arrResult = array_merge($arr1, $arr2);
print_r($arrResult);
?>

Sonuç olarak ise;
Array ( [0] => Array ( [0] => merdincz
[1] => test
[2] => test2
)
[1] => Array (
[0] => ilk array
[1] => ikinci
[2] => katman
)
[2] => Array ( [0] => ikinci
[1] => array
[2] => ilk katman
)
[3] => Array ( [0] => ikinci array
[1] => ikinci
[2] => katman
)
)

Alırız.

Peki asıl kilit soruya dönelim.

İki arrayı birleştirirken bizim key'lerimizin değişmesini istemiyorsak ne yapmalıyız ?

İkinci örneğimizde dikkat ettiyseniz array'lara id belirledik 12, 18 şeklinde ama array_merge ettikten sonra bu key değerleri kayboldu, kaybolmamasının ise yolu basit. string birleştirir gibi birleştirmemiz yeterli :)

Örneğin;
<?php
$arr1 = Array(12 => Array("merdincz", "test", "test2"), 18 => Array("ilk array", "ikinci", "katman"));
$arr2 = Array(13 => Array("ikinci", "array", "ilk katman"), 11 => Array("ikinci array", "ikinci", "katman"));
$arrResult = $arr1 + $arr2;
print_r($arrResult);
?>


Burada alacağınız değer sonucunda herhangi bir key değişikliği vs.. olmayacaktır.

Bunun aksine id'lerin değişmesini veya herhangi bir şekilde aynı değerler olduğunda üzerine yazılmasını istiyorum diyorsanız da array_merge_recursive fonksiyonunu inceleyebilirsiniz :)