PHP'de Özyineleme ve Çok Boyutlu Yapılar
Aşağıda, iç içe geçmiş rastgele bir seviyeye sahip çok boyutlu bir dizi verilmiştir, örneğin:
<?php
$arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
?>
Gördüğünüz gibi, bu dizinin karmaşık bir yapısı vardır ve bu yapının rastgele olabileceği ve iç içe geçme seviyelerinin herhangi bir derinlikte olabileceği varsayılmaktadır.
Diyelim ki dizimizin tüm ilkel (yani dizi olmayan) elemanlarını ekranda göstermek istiyoruz. Bu durumda, böyle bir diziyi gezmek için döngüleri kullanmamız mümkün olmayacaktır, çünkü dizi düzensiz bir yapıya ve bilinmeyen bir iç içe geçme seviyesine sahiptir.
Ancak, böyle bir diziyi gezmek için özyineleme kullanmak çok uygun olacaktır.
İlk olarak, parametre olarak dizimizi ileteceğimiz bir fonksiyon yapalım ve fonksiyonun içinde dizimizi gezmek için bir döngü oluşturalım:
<?php
function func($arr) {
foreach ($arr as $elem) {
echo $elem;
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
Yaptığımız döngü sadece ana dizinin elemanlarını
gezecektir. Yani önce 1'i, sonra [2, 7, 8]'yi,
ve sonra [3, 4, [5, [6, 7]]'yi gösterecektir.
Şimdi döngüde ilkel elemanları ve dizi elemanlarını ayıralım:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
// eleman - dizi
} else {
// eleman - ilkel
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
Ve şimdi, eğer elemanımız bir dizi ise, fonksiyonun kendisini çağırmasını ve parametre olarak bu diziyi iletmesini sağlayalım:
<?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]]]]);
?>
Aşağıda, iç içe geçmiş rastgele bir seviyeye sahip çok boyutlu bir dizi verilmiştir, örneğin:
<?php
$arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]];
?>
Özyineleme kullanarak bu dizinin tüm ilkel elemanlarını ekranda gösterin.