Какая функция может заменить несколько вложенных циклов в php?

Я работаю над функцией генеалогического дерева, и мне нужно for() заявление для каждого поколения.

Я не знаю количество поколений заранее и все for() операторы будут содержать почти тот же сценарий …

$nb_parents_line1 = 1;
for($i = 0 ; $i < $nb_parents_line1 ; $i++) {

$nb_parents_line2 =  $nb_son[$i];
for($i2 = 0 ; $i2 < $nb_parents_line2 ; $i2++) {/*for each son of each parent*/

$nb_parents_line3 = ;
for($i3 = 0 ; $i3 < $nb_parents_line3 ; $i3++) {/*for each son of each son of each parent*/

$nb_parents_line4 = ;
for($i4 = 0 ; $i4 < $nb_parents_line4 ; $i4++) {/*and so on...*/

}
/*center*/
}
/*code for center*/
}
/*code for center*/
}

Есть ли самый простой способ сделать такое двухмерное для?
Есть ли способ иметь так же, как for() как мне нужно?

1

Решение

Наконец я использовал / адаптировал предложение пользователя 2182349:

$level_max = 4;

function recursive_function($level) {

global $i, $nb_parents_line, $levelmax;

$tmp = $nb_parents_line[$level]; //The number of child per parents : the index represent the generation

//code to execute before going down a level

for($i[$level] = 0; $i[$level] < $tmp; $i[$level]++) {

if($level < $level_max){

recursive_function($level +1); //level +1
}

}

//code to exectute after the script had gone down all levels and reup levels one by one
}

Этот фактический код выполнит самый глубокий for() Первое утверждение, позволяющее в этом случае точно знать ширину всех дочерних элементов до вычисления ширины родительского элемента. Но вы можете изменить порядок, поставив любой код перед for(),

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]