php 在foreach循环中使用next

ygya80vv  于 2023-05-16  发布在  PHP
关注(0)|答案(3)|浏览(168)

我正在使用foreach循环遍历数组。
在特定情况下,我需要在迭代到达下一个元素(像预测)之前知道该元素的值。为此,我计划使用函数next()
在文档中,我注意到next()将内部数组指针向前推进。
next()的行为与current()类似,但有一点不同。它在返回元素值之前将内部数组指针向前推进一位。这意味着它返回下一个数组值,并将内部数组指针前进1。
如果是这样,它会影响我的foreach循环吗?

bihw5rsg

bihw5rsg1#

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

<?php

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

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

输出

value:a下一页:B
value:B下一页:c
value:c下一页:d
value:d下一页:e
value:e下一个:f
value:f下一个:

ndasle7k

ndasle7k2#

next()doesn't affect foreach(),period.
至少在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最适合你要做的事情。我只是回答了问题。

ryevplcw

ryevplcw3#

试试这个代码:

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

相关问题