PHPの勉強中に、配列での中身をforeach文で出力する際に最後の処理だけ変更したいことがあったので、備忘録として最初の処理の変更方法と一緒に書いていこうと思います。

最初の処理を変更したい場合

$arr = [1,2,3,4,5];
$i = 0;
foreach($arr as $arr_item){
  $i++;
  if($i==1){
    echo $arr_item - 1 . ' ';
  }else{
    echo $arr_item . ' ';
  }
}
// 出力結果:「0 2 3 4 5」


ここで何をしているかというと

  1. foreach文内で、$iという名前の変数を一つずつ増やすようにする
  2. $iがループの1週目の「1」のときだけの処理とその他の処理を分ける。


以上のように書くことで最初の要素だけ「1」を引いた数が出力されます。

最後の処理を変更したい場合


次に最後の処理を変えたい場合です。

$arr = [1,2,3,4,5];
$count = count($arr);
$i = 0;
foreach($arr as $arr_item){
  $i++;
  if($count == $i){
    echo $arr_item + 1;
  }else{
    echo $arr_item . ' ';
  }
}
// 出力結果:「1 2 3 4 6」


ここで何をしているかというと

  1. $arrという名前の配列をcount関数で配列の要素数を取得する
  2. foreach文内で、$iという名前の変数を一つずつ増やすようにする
  3. $countの値と$iの値が等しくなった時(つまり最後のループ時)の処理とその他の処理を分ける。


他にもend関数やreset関数を用いて記述する方法もありますが、配列の要素内に指定した要素と同じ要素があった場合、思った挙動にならないと思ったので上記のような記述にしています。