php递归函数foreach结果意外

php递归函数foreach结果意外,php,Php,这是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()

这是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
这将是一个无限循环,直到它被突然终止 供参考

说明:

  • 函数sub不会根据条件终止。
  • 变量$i递增,但包含何时停止的语句。
    $i
    的值已更改 当您执行
    sub(+$i)
    时,实际上将
    $i
    的值更改为递增一。因此,当函数返回且foreach循环转到数组的第二个值时,
    $i
    的值发生了更改,从而产生了意外的结果


    尝试执行
    sub($i+1)
    。输出现在是正确的,但仍然与预期的输出不同。

    您正在测试,
    $i得到了什么结果???我添加了我的结果。@PH.niskhkar所以为什么我得到最后的结果计数=>2和i=>2
    
    count => 1 and i => 1
    count => 1 and i => 2