Ben bir inputed dizinin değerlerine dayalı çok boyutlu diziler oluşturmak için temel bir özyineleme çalışılıyor.
Yineleme biz döngü başlatmak için "özyineleme" diyoruz ve biz sonuna kadar "stop_recursion" diyeceğiz başka bir değer arar eder bir değer için kontrol ederek çalışır.
Temelde bu diziyi alıyor
array('One', 'Two', 'recursion', 'Three', 'Four', 'Five', 'stop_recursion', 'Six', 'Seven')
Bu dizi yapmak
array('One', 'Two', array('Three', 'Four', 'Five'), 'Six', 'Seven')
Aşağıdaki gibi ben şimdiye kadar bunun için var kodu
function testRecrusion($array, $child = false)
{
$return = array();
foreach ($array as $key => $value) {
if ($value == 'recursion') {
unset($array[$key]);
$new = testRecrusion($array, true);
$array = $new['array'];
$return[] = $new['return'];
} else {
if ($value == 'stop_recursion') {
unset($array[$key]);
if ($child) {
return array('return' => $return, 'array' => $array);
}
} else {
unset($array[$key]);
$return[] = $value;
}
}
}
return $return;
}
Ama bu ikinci çıkışı
Array
(
[0] => One
[1] => Two
[2] => Array
(
[0] => Three
[1] => Four
[2] => Five
)
[3] => Three
[4] => Four
[5] => Five
[6] => Six
[7] => Seven
)
Ben ... asıl soru sanırım ilk çağrı veya bir kez verilen ilk değerler üzerinden bir dizi değerleri sürekli döngü yeni dizi döndürülür ve dizi yeni dizi aracılığıyla döngü o olacak. Ben cevap evet, eski dizi değeri devam edeceğini söyleyerek burada temelde olduğunu biliyorum, ama gereken bu iş tam tersi değil?
Herhangi bir yardım takdir edilecektir :)
------------ Edit -------------------
Ben de ben çok daha basit bir yöntem kullanarak bu eylemi gerçekleştirmek olurken, bu çocuk dizileri bir sonsuz sayıda olabilir bir dize çözümleyici taşıdık olacağından ardışık kontrol edilmesi gerektiğini ekleyebilirsiniz.