在foreach循环中使用next

时间:2013-07-31 06:00:04

标签: php arrays foreach next

我使用foreach循环遍历数组。

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

在文档中我刚注意到next()使内部数组指针前进。

  

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

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

3 个答案:

答案 0 :(得分:8)

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

<?php

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

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

<强>输出

  

价值:a   下一个:b

     

值:b   下一篇:c

     

值:c   下一篇:d

     

值:d   下一个:e

     

价值:e   下一篇:f

     

值:f   下一个:

答案 1 :(得分:0)

试试这段代码:

$a=$array();
foreach($a as $key=>$var)
{
   if(isset($a[$key+1]))
      echo $a[$key+1];//next element
}

答案 2 :(得分:0)

next() 不会影响foreach(),期间。

至少在PHP 7.2中,

$values = ['a', 'b', 'c', 'd', 'e'];

foreach ($values as $value) {
  next($values);
  $two_ahead = next($values);
  echo("Two ahead: $two_ahead\n");
  echo("Current value: $value\n");
}

产生:

Two ahead: c
Current value: a
Two ahead: e
Current value: b
Two ahead: 
Current value: c
Two ahead: 
Current value: d
Two ahead: 
Current value: e

还要注意,foreach循环也不影响next的位置。他们是独立的。

如果您的数组具有顺序数字键(默认),则ops' answer最适合您要执行的操作。我只是回答了这个问题。