我们都知道,在正常for
- 循环中,您应该从循环头中提取count()
以获得更好的性能,这意味着您应该使用
$size = count($array);
for($i; $i < $size; $i++) {...}
而不是
for($i; $i < count($array); $i++) {...}
避免每次重复count()
来电。
但foreach
在这种情况下如何运作?我非常肯定,由于for
表达式处理,它总体上比as $key => $value
循环慢,但这并不是我想到的。我对&#34;计数&#34;的实施很感兴趣。 foreach
- 循环的一部分。
有谁知道吗?
编辑: 在此问题被视为this question的可能副本之后:我不想知道数组游标的处理,而是计算部分的实现。
答案 0 :(得分:3)
在每次迭代中,当前元素的值被赋值为$ value,内部数组指针被提前一个(因此在下一次迭代中,您将看到下一个元素)。
next()功能
返回内部数组指针指向的下一个位置的数组值,如果没有更多元素,则返回FALSE。
为了简单起见,我们可以说对于数组迭代,foreach
在内部使用next()
(或具有相同效果的东西)。没有count()
。数组foreach与此非常类似:
reset( $array );
do {
$value = current( $array );
...
while ( next( $array ) );