Smarty の foreach では最初と最後を判定できるプロパティ(first, last)がありますが、PHP の foreach にはありません。あったらいいのに。仕方ないので以下のように判定しています。
foreach ($array as $key => $val) {
if (array_key_first($array) === $key) {
echo 'ループの最初です';
}
if (array_key_last($array) === $key) {
echo 'ループの最後です';
}
}
WordPress で親カテゴリーのリンクのみ出力したい・カテゴリー名の間にセパレーターを表示したい・でも最後のカテゴリー名の後はセパレーターを表示したくない時など、the_category() では対処できない場合に使っています。