For循环条件检查PHP

时间:2015-06-16 14:48:17

标签: php for-loop control-flow

我正在使用for循环编写PHP代码:

for($i=1;$i<=count($ArrayData);$i++){
  //some code that changes the size of $ArrayData
}

程序是每次还是仅检查一次循环条件($i<=count($ArrayData))

谢谢

3 个答案:

答案 0 :(得分:3)

每一次。
来自PHP manual

for (expr1; expr2; expr3)
     

...
  在每次迭代开始时,将评估expr2。如果它的计算结果为TRUE,则循环继续并执行嵌套语句。如果计算结果为FALSE,则循环的执行结束。

这也可以使用以下代码段进行验证:

<?php
function compare($i)
{
    echo 'called'.PHP_EOL;
    return $i < 5;
}
for($i = 0; compare($i); $i++) {}

应打印:

called
called
called
called
called
called

(请注意,第6次compare被调用,它会返回FALSE,但仍会打印called。)

[Demo]

答案 1 :(得分:2)

每次迭代都会检查它,例如:

for($i=1;$i<count($ArrayData);$i++){
    $ArrayData[]=1;
}

将持续到内存耗尽,它将产生例如:

  

致命错误:允许的内存大小为536870912字节耗尽

要将其更改为仅检查一次,请使用:

for($i=1,$c =count($ArrayData); $i<=$c;$i++){
    $ArrayData[]=1;
}

答案 2 :(得分:0)

因为123在每次迭代中递增。只要循环正在运行,每次迭代中的条件也会根据新值$i进行检查。