PHP 如何确定 foreach 循环中的第一个和最后一个迭代?

2022-08-30 05:50:10

问题很简单。我的代码中有一个循环:foreach

foreach($array as $element) {
    //code
}

在这个循环中,我想在第一次或最后一次迭代时做出不同的反应。

如何做到这一点?


答案 1

如果您更喜欢不需要在循环外部初始化计数器的解决方案,则可以将当前迭代键与告诉您数组的最后一个/第一个键的函数进行比较。

PHP 7.3 及更高版本:

foreach ($array as $key => $element) {
    if ($key === array_key_first($array)) {
        echo 'FIRST ELEMENT!';
    }

    if ($key === array_key_last($array)) {
        echo 'LAST ELEMENT!';
    }
}

PHP 7.2 及更早版本:

PHP 7.2 已经是 EOL(生命周期结束),所以这里只是历史参考。避免使用。

foreach ($array as $key => $element) {
    reset($array);
    if ($key === key($array)) {
        echo 'FIRST ELEMENT!';
    }

    end($array);
    if ($key === key($array)) {
        echo 'LAST ELEMENT!';
    }
}

答案 2

您可以使用计数器:

$i = 0;
$len = count($array);
foreach ($array as $item) {
    if ($i == 0) {
        // first
    } else if ($i == $len - 1) {
        // last
    }
    // …
    $i++;
}

推荐