哪个函数可以替换php中的多个嵌套循环?

哪个函数可以替换php中的多个嵌套循环?,php,for-loop,recursion,nested-loops,family-tree,Php,For Loop,Recursion,Nested Loops,Family Tree,我处理一个族谱函数,需要为每一代迭代一个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 p

我处理一个族谱函数,需要为每一代迭代一个
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*/
}
$nb\u parents\u line1=1;
对于($i=0;$i<$nb\u家长\u行1;$i++){
$nb_parents_line2=$nb_son[$i];
对于($i2=0;$i2<$nb_parents_line2;$i2++){/*对于每个父代的每个子代*/
$nb_父母_线路3=;
对于($i3=0;$i3<$nb_parents_line3;$i3++){/*对于每个家长的每个儿子*/
$nb_父母_线路4=;
对于($i4=0;$i4<$nb_parents_line4;$i4++){/*等等*/
}
/*居中*/
}
/*中心代码*/
}
/*中心代码*/
}
有没有一个最简单的方法来做这样一个二维的?
有没有一种方法可以满足我的需要呢?

最后我使用了user2182349的建议:

$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
}
$level_max=4;
函数递归函数($level){
全球$i,$nb\U父母线,$LEVEMAX;
$tmp=$nb_parents_line[$level];//每个家长的子代数:索引表示代
//在降级之前要执行的代码
对于($i[$level]=0;$i[$level]<$tmp;$i[$level]++){
如果($level<$level_max){
递归函数($level+1);//level+1
}
}
//要在脚本逐级执行并重新执行后执行的代码
}
此实际代码将首先执行最深的
for()
语句,在本例中,该语句允许在计算父级的宽度之前准确地知道所有子级的宽度。但是您可以通过将任何代码放在
for()

递归之前来更改顺序-