Menggabungkan Array Secara Rekursif di PHP
Dalam pemrograman PHP, penggabungan array merupakan tugas umum yang sering dijumpai. Ada banyak metode untuk menggabungkan array, namun metode rekursif menawarkan fleksibilitas tinggi, terutama saat menghadapi array multidimensi.
Apa Itu Array Rekursif?
Rekursi adalah teknik pemrograman di mana sebuah fungsi memanggil dirinya sendiri. Dalam konteks array, rekursi digunakan untuk mengakses dan memproses semua elemen array, termasuk elemen di dalam array lain (jika ada).
Mengimplementasikan Fungsi Rekursif untuk Menggabungkan Array
Berikut adalah contoh fungsi rekursif PHP untuk menggabungkan dua array:
function array_merge_recursive($array1, $array2) {
$merged = $array1;
foreach ($array2 as $key => $value) {
if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
$merged[$key] = array_merge_recursive($merged[$key], $value);
} else {
$merged[$key] = $value;
}
}
return $merged;
}
Penjelasan Kode:
- Fungsi
array_merge_recursive()
menerima dua parameter, yaitu$array1
dan$array2
, yang merupakan array yang akan digabungkan. - Fungsi tersebut membuat variabel
$merged
yang merupakan salinan dari$array1
. - Fungsi tersebut iterasi melalui setiap elemen dalam
$array2
menggunakanforeach
. - Untuk setiap elemen dalam
$array2
, fungsi tersebut memeriksa apakah elemen tersebut merupakan array. Jika ya, dan jika$merged
juga memiliki key yang sama dengan elemen tersebut dan juga merupakan array, maka fungsi tersebut memanggil dirinya sendiri (rekursi) untuk menggabungkan elemen tersebut. - Jika elemen tersebut bukan array, atau jika
$merged
tidak memiliki key yang sama dengan elemen tersebut, maka elemen tersebut langsung ditambahkan ke$merged
. - Akhirnya, fungsi tersebut mengembalikan
$merged
yang berisi gabungan dari$array1
dan$array2
.
Contoh Penggunaan
$array1 = array(
'nama' => 'John Doe',
'alamat' => 'Jl. ABC No. 123',
'hobi' => array('Membaca', 'Bermain Game')
);
$array2 = array(
'umur' => 30,
'hobi' => array('Menulis')
);
$merged_array = array_merge_recursive($array1, $array2);
print_r($merged_array);
Hasil Output:
Array
(
[nama] => John Doe
[alamat] => Jl. ABC No. 123
[hobi] => Array
(
[0] => Membaca
[1] => Bermain Game
[2] => Menulis
)
[umur] => 30
)
Seperti yang terlihat pada output, fungsi array_merge_recursive()
berhasil menggabungkan kedua array, termasuk array nested hobi
.
Kesimpulan
Fungsi rekursif memberikan solusi yang efisien untuk menggabungkan array multidimensi. Kode tersebut dapat dimodifikasi sesuai kebutuhan untuk menangani berbagai skenario. Namun, penting untuk memahami bahwa rekursi dapat menjadi kompleks dan berpotensi menyebabkan stack overflow jika digunakan secara berlebihan.
Selalu pertimbangkan efisiensi dan kompleksitas kode sebelum memilih metode penggabungan array.