在 foreach 循环中获取下一个元素

2022-08-30 09:25:40

我有一个 foreach 循环,我想看看循环中是否有下一个元素,这样我就可以比较当前元素和下一个元素。我该怎么做?我已经阅读了有关当前和下一个函数的信息,但我不知道如何使用它们。

提前致谢


答案 1

一种独特的方法是反转数组,然后循环。这也适用于非数字索引数组:

$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 函数感兴趣,可以执行以下操作:currentnext

$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;


答案 2

你可以使用 while loop 而不是 foreach:

while ($current = current($array) )
{
    $next = next($array);
    if (false !== $next && $next == $current)
    {
        //do something with $current
    }
}

推荐