棘手的循环代码

时间:2015-11-30 01:06:44

标签: php algorithm syntax while-loop

我有这个简单的代码,但我不明白为什么输出是'234567'而不是'246'。

$a = 1;
while ($a < 10)
{
  echo $a+1;
  if ($a == 6)
  {
   break;
 }
 $a += 1;
}



输出:

234567

1 个答案:

答案 0 :(得分:2)

因为在第4行中你打印的是($ a + 1)的结果,但你不是在变量$ a中加1。

追踪1:

$a = 1

echo 1+1; // ($a + 1) 2. PRINTS two but $a is still 1
$a = $a + 1; // now $a is equal to 2 ( 1 + 1 )
// Current output 2

追踪2:

$a = 2 // from trace 1

echo 2+1; // ($a + 1) 3. PRINTS 3 but $a is still 2
$a = $a + 1; // now $a is equal to 3 ( 2 + 1 )
// Current output 23

追踪3:

$a = 3 // from trace 2

echo 3+1; // ($a + 1) 4. PRINTS 4 but $a is still 3
$a = $a + 1; // now $a is equal to 4 ( 3 + 1 )
// Current output 234

等等。

做你想做的事:

$a = 1;
while ($a < 10)
{
    echo ++$a;

    if ($a == 6) break;

    $a += 1;
}