Rekursi dan Struktur Multidimensi dalam PHP
Diberikan array multidimensi dengan tingkat kedalaman sembarang, contohnya, seperti ini:
<?php
$arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
?>
Seperti yang Anda lihat, array ini memiliki struktur yang kompleks, dan diasumsikan bahwa struktur ini bisa sembarang dan tingkat kedalamannya bisa sangat dalam.
Misalkan kita ingin menampilkan semua elemen primitif (yaitu bukan array) dari array kita. Dalam hal ini, untuk melakukan iterasi array seperti ini kita tidak akan bisa menggunakan perulangan biasa, karena array memiliki struktur yang tidak beraturan dan tingkat kedalaman yang tidak diketahui.
Namun, untuk iterasi array seperti ini, rekursi sangat cocok untuk digunakan.
Pertama, kita buat sebuah fungsi, yang parameternya adalah array kita, dan di dalam fungsi kita buat perulangan untuk menelusuri array kita:
<?php
function func($arr) {
foreach ($arr as $elem) {
echo $elem;
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
Perulangan yang kita buat hanya akan menelusuri
elemen-elemen array utama. Artinya, awalnya
ia akan menampilkan 1, lalu [2, 7, 8],
dan kemudian [3, 4, [5, [6, 7]].
Sekarang mari kita pisahkan dalam perulangan antara elemen primitif dan elemen array:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
// elemen adalah array
} else {
// elemen adalah primitif
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
Dan sekarang kita atur sehingga jika elemen kita adalah array, fungsi akan memanggil dirinya sendiri, dengan parameter array tersebut:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
func($elem);
} else {
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
Diberikan array multidimensi dengan tingkat kedalaman sembarang, contohnya, seperti ini:
<?php
$arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]];
?>
Dengan menggunakan rekursi, tampilkan semua elemen primitif dari array ini.