[PHP] foreachで配列の最初と最後を判別する方法

  • 公開日:2015/8/18
この記事は最終更新日から8年以上が経過しています。

配列の要素を取り出す場合に「foreach」をよく使います。
このforeachの処理中、最後だけ処理を変えたいことがあったので、その判別方法をメモ。
ついでに最初を判別する方法も。

判別には、重複しない配列キーを使用します。
foreachでループする前に、最初と最後の配列キーを取得しておいて、ループ中にそのキーと一致するか否かを判定していくという段取り。

配列キーを取得するには、each関数を使用します。
each関数で現在ポインタされているキーと値を取得できます。

配列の最初にポインタを合わせるには、reset関数を、
配列の最後にポインタを合わせるには、end関数を使用します。

// 対象の配列
$array = array('apple', 'banana', 'cranberry'); 

// 配列の最初にポインタを移動
reset($array);
// このときのキーを取得
list($first_key,) = each($array);

// 配列の最後にポインタを移動
end($array);
// このときのキーを取得
list($last_key,) = each($array);

foreach ($array as $key => $value)
{
    if ($key === $first_key)
    {
        // 最初だけの処理
    }

    if ($key === $last_key) // 最後の要素
    {
        // 最後だけの処理
    }

    // 通常の処理
}