在foreach循环中使用next

Kha*_*eel 4 php arrays foreach next

我正在使用foreach循环遍历数组.

在特定情况下,我需要知道迭代之前的下一个元素的值(如预测)元素.为此,我打算使用函数next().

在文档中我只是注意到next()向前推进内部数组指针.

next()的行为类似于current(),但有一点不同.它在返回元素值之前将内部数组指针前进一个位置.这意味着它返回下一个数组值并将内部数组指针前进一个.

如果是这样会影响我的foreach循环?

liy*_*kat 8

如果以这种方式使用它,它不会影响你的循环

<?php

$lists = range('a', 'f');

foreach($lists as &$value) {
   $next = current($lists);
   echo 'value: ' . $value . "\n" . 'next: ' . $next . "\n\n";
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

价值:下一个:b

值:b下一个:c

值:c下一个:d

价值:d下一个:e

价值:e下一个:f

值:f下一个:

  • `$next = current($lists);` 行应该是 `$next = next($lists);` 吗? (2认同)
  • @ e-motiv**这不稳定且向前兼容.**它甚至不*向后*兼容.正如使用http://sandbox.onlinephpfunctions.com/测试的那样,这总是在PHP 5.0.4到5.1.6中声明为"a".然后从5.2.16到5.6.29,它的"b","c","d","e","f"(所以你的输出)和从7.0.1开始它保持"a".正如http://grokbase.com/t/php/php-internals/13bjdgjhcz/foreach-and-current#20131118q6fneqrepzxtdk562h7p2wkdmm所述,`foreach`和`current`彼此无关. (2认同)