php的FOR循环的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php的FOR循环的问题相关的知识,希望对你有一定的参考价值。

<?php
for ($a =1; $a <10;$a++)
echo $a++;

?>
输出结果是13579

<?php
for ($a =1; $a <10;$a++)
echo ++$a;

?>

为什么输出结果又是246810

第一个循环:
for ($a =1; $a <10;$a++)
echo $a++;

首先a=1的时候进入循环,由于$a++; 加号在后面表示(先赋值再运算);
所以输出的$a=1; 紧接着就是$a++进行运算了(在输出以后$a其实变成了2);
并且循环本身$a就是自增的。所以当第二次进入循环时$a已经变成了3!
以此类推。$a输出的结果为 1,3,5,7,9

至于第二个循环就不用多说了吧。。
就是一个$a++ 和 ++$a 的区别($a++ 是先赋值再运算,++$a是先运算再赋值)
所以当$a=1进入循环时。首先进行++$a 运算(就是运算),完成以后$a自然就变成2了。所以echo $a 就成了2! 再加上循环本身有自增,所以第二次循环的时候 $a就变成了4!
以此类推。$a输出的结果为 2,4,6,8,10

呵呵 我讲的够详细了吧!希望对您有所帮助!
参考技术A $a++相当于$a;$a=$a+1;
++$a相当于$a=$a+1;$a;
参考技术B 这个是$a++和++$a的区别了,
echo $a++ 是先输出$a 然后执行++的操作,所以输出1之后,执行++,$a边成了2,然后for循环里面又执行$a++所以$a就变成了3,这样……
echo ++$a 则是先执行++ 然后在输出,所以输出也就是2468了,楼主可以找一本基础的php书,看看++操作符的用法

改进 PHP 'for' 循环

【中文标题】改进 PHP \'for\' 循环【英文标题】:Improve PHP 'for' loop [duplicate]改进 PHP 'for' 循环 【发布时间】:2016-05-09 15:49:21 【问题描述】:

当使用典型的for 循环时,PHPStorm 建议更改它以获得更好的性能。我真的不明白这个建议。应该怎么改?

【问题讨论】:

点击 more 时 PHPStorm 的建议是什么?我很好奇为什么 PHPStorm 建议这样做。 只有analyses for loops and reports the usage blablabla :) foreach 然后忘记 【参考方案1】:

如果您在for 循环内执行count(),则每次迭代都会执行它,调用该函数会产生性能开销。

如果您在for 循环之前调用count() 并将结果分配给一个变量,然后与for 循环中的变量进行比较,您就没有函数调用开销,所以它更快

【讨论】:

【参考方案2】:

for($i = 0; $i &lt;= count($data); $i++)

在此示例中,每次迭代都必须再次count($data)

for($i = 0, $iMax = count($data); $i &lt;= $iMax; $i++)

在这个例子中,它只需要count($data) 一次。

这就是区别。

【讨论】:

参考见this post 大概这是假设$data在循环内没有改变长度,否则两者会不同。 @abligh 如果$data 在for 循环内改变长度,你可能一开始就不应该使用for 循环。不过我可能有偏见,我认为你不应该使用 for 循环。 $iMax 是一个非常糟糕的变量名称。它应该是$length 或更易读的东西。此外,使用foreach($array as $i =&gt; &amp;$value) 将产生相同的结果,并且实际上可以与for() 循环一样快。 @Odalrick for 循环有其用途。然而,在 OP 的情况下,看一眼变量名称就表明 foreach 可能 是一个更好的主意。无论如何,我经常强烈支持foreach,因为它不关心其中有间隙的数组/结构,而且(IMO)看起来有点干净。【参考方案3】:

通过以您的方式进行循环,每次迭代都需要评估count($data)。如果列表中有很多项目,则可能需要一段时间(相对)来计算这些项目,并且每次都必须这样做。

它给你的提示是在开始时将一个变量设置为 count($data) 的值,然后将该变量用作循环限制,当它只计算一次时。

这可以通过两种方式完成:

$loopMax = count($data);
for ($i = 0; $i <= $loopMax; $i++) 
    // Your code here

或者

for ($i=0, $loopMax = count($data); $i <= $loopMax; $i++) 
    // your code here

【讨论】:

如果您出于某种原因要进行多次迭代,显然首选第一个。在其他时候,底部是首选,因为您应该始终努力限制变量的范围。 top 的使用不限于当您要对其进行多次迭代时,例如,如果应用程序需要输出计数,它也会很有用;也许是一些分页或类似的。但是是的,变量的范围应该限制在需要的地方。

以上是关于php的FOR循环的问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP中while循环和for循环的区别?

15PHP 循环 - For 循环

php中的for循环和js中的for循环

js的for循环跟php循环

php-在for循环中查找下一个数组值

php之快速入门学习-14(php-for循环)