【PHP】foreachで配列の最初と最後で処理を変える

reset()関数とend()関数を使ってforeach文の最初と最後だけ処理を変える方法を紹介します。

通常のforeach文
$week = array("月","火","水","木","金","土","日");
foreach ( $week as $value){
    echo $value;
}

▼表示結果

月火水木金土日

最初の判定はreset()関数

$week = array("月","火","水","木","金","土","日");
foreach ( $week as $value){
    if($value == reset($week)){
        //最初の処理
        echo '曜日:'.$value;
    }else{
        //2周目以降の処理
        echo '、'.$value;
    }
}

▼表示結果

曜日:月、火、水、木、金、土、日

最初の処理で先頭に曜日:を表示。2周目以降の処理は、$valueにして、曜日:の見出しがついたカンマ区切りの表示にしてます。

最後の判定はend()関数

$week = array("月","火","水","木","金","土","日");
foreach ( $week as $value){
    if($value == end($week)){
        //最後の処理
        echo $value;
    }else{
        //2周目以降の処理
        echo $value.'、';
    }
}

▼表示結果

月、火、水、木、金、土、日

$value.'、'でループさせ、最後の処理のみカンマをつけずに出力することで、配列をカンマ区切りで表示してます。