PHP 8.5では、新たに array_first() と array_last() という便利な関数が追加されます。
これらを使うことで、あらゆる配列から先頭と末尾の値を、シンプルかつスピーディーに取得できるようになります。
これまでは同様の処理を行うために、開発者はより複雑で手間のかかる手法を取る必要がありました。
しかし、このアップデートにより、特にPHP初心者でもコードをすっきり書くことができ、可読性も大きく向上します。
なぜこのことが重要なのでしょうか?
PHP 8.5の登場以前は、開発者は主に次の2つの方法を用いていました。
reset()とend()の使用
$first = reset($items);
$last = end($items);
- 内部の配列ポインタが変更される(望ましくない副作用)
- 配列式に支障がある(変数でなければならない)
array_key_first()とarray_key_last()の使用
$first = $items[array_key_first($items)];
$last = $items[array_key_last($items)];
- 記述が冗長になる
- 空の配列を判定する追加処理が必要になる
- PHP初心者にとって分かりにくい
PHP 8.5を用いた新しい方法 - これらの関数で何をするか?
| 関数 | 関数シグネチャ | 戻り値 |
| array_first() | function array_first(array $array): mixed {} | 配列の最初の値 |
| array_last() | function array_last(array $array): mixed {} | 配列の最後の値 |
配列が空の場合、両方の関数はnullを返します。
使い方
例1:単純なインデックス配列
これらの関数を使うと、配列の最初と最後の要素を、内部ポインタに影響を与えることなく、キーを使用せずに簡単に取得できるようになります。
$numbers = [10, 20, 30, 40];
echo array_first($numbers); // 10
echo array_last($numbers); // 40
例2:連想配列
これらの関数はキーに依存しません。内部の順序に基づいて、値を返します。
$settings = [
'theme' => 'dark',
'language' => 'en',
'notifications' => true
];
echo array_first($settings); // 'dark'
echo array_last($settings); // true (ブール値)
例3:空の配列
空の配列の場合、両方の関数はエラーを発生させることなく、nullを返します。
$emptyArray = [];
$first = array_first($emptyArray); // null
$last = array_last($emptyArray); // null
例4:キーが混在する配列
キーの順序が不規則であっても、これらの関数は問題なく動作します。
$messyArray = [
3 => 'third',
0 => 'first',
2 => 'second',
1 => 'fourth'
];
echo array_first($messyArray); // 'third' (内部の順序で最初)
echo array_last($messyArray); // 'fourth' (内部の順序で最後)
例5:単一要素配列
$solo = ['lonely'];
echo array_first($solo); // 'lonely'
echo array_last($solo); // 'lonely' (同じ要素)
導入前と導入後:変化の比較
新しい関数と、既存のいくつかのパターンを比較してみましょう。
| シナリオ | 旧方式(PHP < 8.5) | 新方式(PHP 8.5+) |
| 最初の要素を取得 | reset($array) または $array[array_key_first($array)] | array_first($array) |
| 最後の要素を取得 | end($array) または $array[array_key_last($array)] | array_last($array) |
| null 安全で最初の要素を取得 | !empty($array) ? reset($array) : null | array_first($array) |
| クエリ結果の最後を取得 | $result = $query->get(); end($result); | array_last($query->get()) |
概要
PHP 8.5で導入された新関数、array_first()とarray_last()は、一見ささいな機能に見えるかもしれませんが、日常的なコーディングをよりスムーズにします。特にPHPを学び始めたばかりの開発者には、特に効果があるでしょう。
- 内部ポインタへの副作用を解消
- 隠れた補助的手段が不要
- 初心者にも簡単
- 空の配列でも一貫性のある動作
- 読みやすく、意図が明確なコードを記述

