哪个函数可以替换 php 中的多个嵌套循环?
Which function can replace multiple nested loops in 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()
满足我的需要?
最后我used/adapted 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()
.
之前放置任何代码来更改顺序
我在做家谱函数,我需要为每一代迭代一个 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()
满足我的需要?
最后我used/adapted 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()
.