他の言語では配列の最後の要素を取得するための関数があるのですが、PHPは特に関数一発ではできず工夫が必要です。
array_key_last関数、count関数、end関数(※ポインタ利用のため非推奨)を使った取得の仕方をまとめました。
配列の最後のキーを取得して値を取り出す(PHP7.3.0~)
array_key_last()関数を使い配列の最後のキーを取得します。ただし、PHP7.3.0から使えるようになった関数なので、対応していない場合があります。その場合は他の取得の仕方を使ってください。
$key = array_key_last($arr);
$value = arr[$key];
1行で書くとこうなります。
$value = $arr[array_key_last($arr)];
配列の長さを使ってインデックス指定する
count()関数を使い配列の長さを取得します。その後、-1してインデックスから値を取得します。
$length = count($arr);
$index = $length - 1;
$value = $arr[$index];
1行で書くとこうなります。
$value = $arr[count($arr) - 1];
end()関数を使う(内部ポインタを利用するため注意が必要)
end()関数を使います。 end()関数は内部ポインタを最後の要素へセットする関数ですが、戻り値に最後の要素の値を返します。空の配列の場合は false
を返します。
ポインタは人間には優しくないため、関わらない方が良いかもしれません。意味を分からず使用しているとバグを生む可能性大です。
$value = end($arr);
もう少し直感的にポインタを使わない取得の仕方があると良かったのにと思います。
まとめ array_key_last関数かcount関数-1を使おう
PHP7.3.0~ならarray_key_last関数かcount関数-1を使いましょう。それ以前のPHPバージョンの場合はcount関数-1を使いましょう。
こちらの記事も似ている内容なので、よろしければご覧ください。