【问题标题】:Which function can replace multiple nested loops in php?哪个函数可以替换php中的多个嵌套循环?
【发布时间】:2016-07-08 16:43:52
【问题描述】:

我在处理家谱函数,我需要为每一代迭代一个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() 的方法?

【问题讨论】:

标签: php for-loop recursion nested-loops family-tree


【解决方案1】:

最后我使用/改编了 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
}

这个实际代码将首先执行最深的for() 语句,在这种情况下允许在计算父级宽度之前准确知道所有子级的宽度。但是您可以通过在for() 之前添加任何代码来更改顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2019-01-24
    • 2014-05-20
    • 2013-09-25
    • 2021-09-05
    相关资源
    最近更新 更多