我正在使用foreach循环遍历数组。在特定情况下,我需要在迭代到达下一个元素(像预测)之前知道该元素的值。为此,我计划使用函数next()。在文档中,我注意到next()将内部数组指针向前推进。next()的行为与current()类似,但有一点不同。它在返回元素值之前将内部数组指针向前推进一位。这意味着它返回下一个数组值,并将内部数组指针前进1。如果是这样,它会影响我的foreach循环吗?
bihw5rsg1#
它不会影响你的循环,如果你用这种方式
<?php $lists = range('a', 'f'); foreach($lists as &$value) { $next = current($lists); echo 'value: ' . $value . "\n" . 'next: ' . $next . "\n\n"; }
输出
value:a下一页:Bvalue:B下一页:cvalue:c下一页:dvalue:d下一页:evalue:e下一个:fvalue:f下一个:
ndasle7k2#
next()doesn't affect foreach(),period.至少在PHP 7.2中,
next()
foreach()
$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最适合你要做的事情。我只是回答了问题。
ryevplcw3#
试试这个代码:
$a=$array(); foreach($a as $key=>$var) { if(isset($a[$key+1])) echo $a[$key+1];//next element }
3条答案
按热度按时间bihw5rsg1#
它不会影响你的循环,如果你用这种方式
输出
value:a下一页:B
value:B下一页:c
value:c下一页:d
value:d下一页:e
value:e下一个:f
value:f下一个:
ndasle7k2#
next()
doesn't affectforeach()
,period.至少在PHP 7.2中,
产生:
还要注意,foreach循环也不会影响next的位置。他们是独立的。
如果你有一个带有连续数字键的数组(默认值),那么ops' answer最适合你要做的事情。我只是回答了问题。
ryevplcw3#
试试这个代码: