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 <= count($data); $i++)
在此示例中,每次迭代都必须再次count($data)
。
for($i = 0, $iMax = count($data); $i <= $iMax; $i++)
在这个例子中,它只需要count($data)
一次。
这就是区别。
【讨论】:
参考见this post 大概这是假设$data
在循环内没有改变长度,否则两者会不同。
@abligh 如果$data
在for 循环内改变长度,你可能一开始就不应该使用for 循环。不过我可能有偏见,我认为你不应该使用 for 循环。
$iMax
是一个非常糟糕的变量名称。它应该是$length
或更易读的东西。此外,使用foreach($array as $i => &$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循环的问题的主要内容,如果未能解决你的问题,请参考以下文章