我正在使用for循环编写PHP代码:
for($i=1;$i<=count($ArrayData);$i++){
//some code that changes the size of $ArrayData
}
程序是每次还是仅检查一次循环条件($i<=count($ArrayData))
?
谢谢
答案 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
进行检查。