PHPで配列を回して最後の要素の時に処理を変えたいということがあると思います。
配列の最後かどうかどうか判定する方法を紹介します。
大きく2つ、foreach文で回す方法とfor文で回す方法となります。
foreach文で回し、array_key_last関数でキーを比較(PHP7.3.0~)
まずarray_key_last関数で配列の最後のキーを取得します。
foreachで配列を回して、if文で最後のキーを現在ループさせているキーを比較して判定します。
$last_key = array_key_last($arr);
foreach ($arr as $key => $value){
if($last_key === $key){
//処理
}
}
ちなみに、array_key_first関数に変えれば配列の最初のキーが取れるので、配列の最初かどうか判定できます。
for文で回し、count関数を使い配列の長さを求め最後のIndexを計算して比較
こちらは先ほどと違いPHPバージョンが低くても使えます。
最初にcount関数を配列の要素数を取得します。次にその要素数に1を引いた数が最後のインデックスになります。
forで回して、if文で最後のインデックスと現在ループさせているiの値を比較して判定します。
$arr_count = count($arr);
$last_index = $arr_count - 1;
for ($i = 1; $i <= $arr_count; $i++){
$value = $arr[i];
if($last_index === i){
//処理
}
}
ちなみに最初の要素で判定したい場合は「0 === i」にして判定すれば良いです。
まとめ
foreach文で回す方法とfor文で回す方法で配列の最後かどうかを判定する方法を紹介しました。
こちらの記事も似ている内容なので、よろしければご覧ください。