这是foreach循环中的一个简单的递归示例,可以理解结果为什么我得到这个结果?
答案将不胜感激。
function sub($i = 1){
$level = array(1,2);
if($i <= 2){
foreach ($level as $count){
echo "count => {$count} and i => {$i}<br/>";
sub(++$i);
}
}
}
sub();
我收到了这个结果
count => 1 and i => 1
count => 1 and i => 2
count => 2 and i => 3
count => 2 and i => 2
我期待这个结果
count => 1 and i => 1
count => 1 and i => 2
答案 0 :(得分:0)
供参考
http://php.net/manual/en/control-structures.foreach.php
说明:
答案 1 :(得分:0)
$i
的值已更改执行sub(++$i)
时,实际上将$i
的值更改为1。因此,当您的函数返回并且foreach循环转到数组的第二个值时,$i
的值已更改,从而产生意外结果。
尝试改为sub($i + 1)
。输出现在是正确的,但仍然与预期的输出不同。
答案 2 :(得分:0)
您正在测试循环外的$i <= 2
。所以当你进入循环时,测试永远不会发生。还有其他问题,但这可能是由于你为解决这个问题所做的事情。