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関数を使うことで、判定できる。