【PHP】foreachで配列の最初と最後を判定して処理をする

PHPで、ループの制御構文foreachを使った時、最初や最後の時だけ行いたい処理がある場合の書き方。

他の言語も含めて、foreach系の制御で最初と最後を判定して処理を行うとき、ループ外にカウンタ用の変数を設けてインクリしていって、最初はカウンタが0のとき、最後は配列の個数-1と比較なんかしたりしていた。

これまで何度も同じロジックを書いてきたので不便に思わなかったけど、なんとなくダサいソースになるのでちゃんと調べてみた。

foreachで配列の最初の判定

PHPの場合、foreachで配列の最初の判定は以下の通り。

$array = [1, 2, 3];
foreach ($array as $value) {
    :
    if ($value === reset($array)) {
        // 配列内、最初の値のみ
    }
    :
}

reset関数を使うことで、判定できる。

foreachで配列の最後の判定

つぎに、foeachで配列の最後の判定は以下の通り。

$array = [1, 2, 3];
foreach ($array as $value) {
    :
    if ($value === end($array)) {
        // 配列内、最後の値のみ
    }
    :
}

end関数を使うことで、判定できる。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください