必要に迫られたので個人的な備忘録を兼ねて。
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です。