先日、PHPでプログラムを書いていてforeachで最後の配列の時だけある処理を行いたいということがありました。
もしかしたら、同じようにforeachで回している配列の最初や最後だけ処理を行いたい方などがいるかと思い記事を書きます。
PHPでforeachを回していて最初と最後の処理を判断する方法の一つは下記のようになります。
Contents
reset関数とend関数を使用する方法
reset関数
配列ポインタを先頭に戻す配列を指定します。
返り値 配列の先頭要素の値を返します。
上記のプログラムでは、foreachで回している配列の先頭と$valueの値を比較し、foreachの最初の処理かどうかを判断しています。
end関数
配列ポインタを最後に進める配列を指定します。
返り値 配列の最後の要素の値を返します。
上記のプログラムでは、foreachで回している配列の最後と$valueの値を比較し、foreachの最後のループか判別しています。
ただ、この方法では、配列の中身が重複している場合など処理がうまくいきません。
そのような場合が考えられる場合は下記のような方法が安全です。
配列の最初のindexと最後のindexを取得して判断する方法
どちらかというとこの方法の方が、確実にforeachで回している最初と最後の配列を判別するのに確実であると思います。
また、PHP7.3以降のバージョンの場合、下記のような方法があります。
PHP7.3以降のバージョンの場合
PHP7.3では、array_key_firstとarray_key_lastという関数が追加されました。
これを使用することで簡単に、配列の最初と最後を判別することができます。
まとめ
今回の記事では、foeach文で配列の最初と最後を判別する方法について紹介しました。
PHP7.3では新たな関数も追加されてだいぶ楽に判別できるようになりました。
foeach文で配列の最初と最後を判別する際の参考にしてください。