必要に迫られたので個人的な備忘録を兼ねて。
PHPでループ処理の[foreach]を扱う際に、最後のときだけ違う処理を施す方法を紹介します。
ここでは仮に、以下のような配列があると仮定します。
<?php
$arr=array('月','火','水','木','金','土','日');
?>
この配列を[foreach]を使って出力するとき、それぞれの文字の間に区切り文字の『|』を挿入します。
欲しい出力結果は以下。
月|火|水|木|金|土|日
$arr=array('月','火','水','木','金','土','日');
<?php foreach($arr as $key) {
echo $key;
echo "|";
} ?>
しかし単純に[foreach]を回しただけでは最後の『日』の次にも『|』が挿入されてしまいます。
月|火|水|木|金|土|日|
そこで、PHPの[next();]関数を使ってこの問題を解決します。
$arr=array('月','火','水','木','金','土','日');
$tmp=$arr;
foreach($arr as $key){
echo $key;
if(next($tmp)){
echo "|"; // 最後の要素ではないとき
}
}
これで、出力結果が『月|火|水|木|金|土|日』となります。
もし、掲題のとおり「最後の要素にだけ…」としたいのであれば、if(next($tmp))
を if(!next($tmp))
に書き換えればOKです。