在 foreach 循环中获取下一个元素
我有一个 foreach 循环,我想看看循环中是否有下一个元素,这样我就可以比较当前元素和下一个元素。我该怎么做?我已经阅读了有关当前和下一个函数的信息,但我不知道如何使用它们。
提前致谢
我有一个 foreach 循环,我想看看循环中是否有下一个元素,这样我就可以比较当前元素和下一个元素。我该怎么做?我已经阅读了有关当前和下一个函数的信息,但我不知道如何使用它们。
提前致谢
一种独特的方法是反转数组,然后循环。这也适用于非数字索引数组:
$items = array(
'one' => 'two',
'two' => 'two',
'three' => 'three'
);
$backwards = array_reverse($items);
$last_item = NULL;
foreach ($backwards as $current_item) {
if ($last_item === $current_item) {
// they match
}
$last_item = $current_item;
}
如果您仍然对使用 and 函数感兴趣,可以执行以下操作:current
next
$items = array('two', 'two', 'three');
$length = count($items);
for($i = 0; $i < $length - 1; ++$i) {
if (current($items) === next($items)) {
// they match
}
}
#2可能是最好的解决方案。注意,将在比较数组中的最后两个项目后停止循环。我把它放在循环中,以便在示例中明确说明。你可能应该只计算$i < $length - 1;
$length = count($items) - 1;
你可以使用 while loop 而不是 foreach:
while ($current = current($array) )
{
$next = next($array);
if (false !== $next && $next == $current)
{
//do something with $current
}
}