如何在PHP中实现foreach的count-part?

时间:2015-11-22 14:00:01

标签: php foreach

我们都知道,在正常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的可能副本之后:我不想知道数组游标的处理,而是计算部分的实现。

1 个答案:

答案 0 :(得分:3)

The documentation说:

  

在每次迭代中,当前元素的值被赋值为$ value,内部数组指针被提前一个(因此在下一次迭代中,您将看到下一个元素)。

next()功能

  

返回内部数组指针指向的下一个位置的数组值,如果没有更多元素,则返回FALSE。

为了简单起见,我们可以说对于数组迭代,foreach在内部使用next()(或具有相同效果的东西)。没有count()。数组foreach与此非常类似:

reset( $array );
do {
   $value = current( $array );
   ...
while ( next( $array ) );