【发布时间】:2014-05-20 03:24:45
【问题描述】:
我是 PHP(以及一般编程)的初学者。 为了测试我到目前为止所学的内容,我编写了这段代码,它打印了一组骰子与一定数量的面的所有可能组合。 (你会在最后找到代码)。
我想要做的是根据$dicenumber 变量动态改变嵌套for循环的数量。现在它只能处理 3 个骰子,因为代码是:
for ($d1=1; $d1 <= $d1value ; $d1++) {
for ($d2=1; $d2 <= $d2value ; $d2++) {
for ($d3=1; $d3 <= $d3value ; $d3++) {
array_push(${sum.($d1+$d2+$d3)}, "$d1"."$d2"."$d3");
}
}
}
但我想改变它,例如,如果 $dicenumber 是 2,它会产生类似:
for ($d1=1; $d1 <= $d1value ; $d1++) {
for ($d2=1; $d2 <= $d2value ; $d2++) {
array_push(${sum.($d1+$d2)}, "$d1"."$d2");
}
}
我希望代码可以处理$dicenumber 的任何数字,没有限制。环顾四周,似乎我必须添加某种递归代码,但我不知道该怎么做。有小费吗?此外,任何关于我做错了什么的反馈都会非常有帮助!谢谢!
<?php
//defines the number and type of dice
$dicenumber = 3;
$dtype = 6;
//defines the maximum value of every die
for ($i=1; $i <=$dicenumber ; $i++) {
${d.$i.value} = $dtype;
}
//defines and array for each possible sum resulting from the roll of the given number of dice.
for ($i=$dicenumber; $i <= ($dtype*$dicenumber) ; $i++) {
${sum.$i} = array();
}
//the troublesome piece of code I want to change
for ($d1=1; $d1 <= $d1value ; $d1++) {
for ($d2=1; $d2 <= $d2value ; $d2++) {
for ($d3=1; $d3 <= $d3value ; $d3++) {
array_push(${sum.($d1+$d2+$d3)}, "$d1"."$d2"."$d3");
}
}
}
//prints all the possible roll combinations, each line lists combination that share the same sum
for ($i=$dicenumber; $i <= ($dtype*$dicenumber); $i++) {
print join(" ", ${sum.$i})."<br />";
}
?>
【问题讨论】:
标签: php for-loop nested-loops