last — コレクションの最後の要素を取得

collection
  • カテゴリ: collection
  • 掲載バージョン: Laravel 10/11/12・PHP 8.4
  • 名前空間 / FQCN: Illuminate\Support\Collection::last
  • 関連: first / pop / takeLast / filter
  • 変更履歴: 旧バージョンから大きな変更なし

要点(TL;DR)

  • コレクションの最後の要素を返す
  • collect([1,2,3])->last();3
  • 注意点:
    • 空コレクションでは null を返す
    • 条件クロージャを渡すと最後に一致した要素を返す

概要

last メソッドは、コレクションの末尾要素を取得します。
クロージャを渡すと、その条件を満たす最後の要素を返します。
データの終了部分を確認したり、最新データを取得する場面でよく使われます。

構文 / シグネチャ

public function last(callable $callback = null, $default = null): mixed
  • 引数
引数必須既定値説明
$callback`callablenull`任意null
$defaultmixed任意null一致要素がない場合の返却値
  • 戻り値:任意型(最後の要素または条件一致要素、見つからなければ $default
  • 例外/副作用:特になし(非破壊的操作)

使用例

最小例

use Illuminate\Support\Collection;

$numbers = collect([10, 20, 30]);

echo $numbers->last(); 
// 30

条件付き取得

$numbers = collect([10, 15, 20, 25]);

$lastEven = $numbers->last(fn($n) => $n % 2 === 0);

echo $lastEven; 
// 20

デフォルト値の指定

$empty = collect([]);

$value = $empty->last(null, 'default');

echo $value; 
// default

よくある落とし穴・注意

  • 空コレクションでは null を返す → 明示的に $default を渡すと安全
  • クロージャを渡した場合、「最初に一致」ではなく「最後に一致」を返す
  • コレクションを逆順にしたい場合は reverse() を使うべき

代替・関連APIとの比較

  • first — 先頭要素を返す
  • pop — 最後の要素を返すがコレクションから削除する(破壊的)
  • takeLast — 複数の末尾要素をサブコレクションで返す

選定基準:

  • 最後の1件だけ必要last
  • 末尾から複数件取り出したいtakeLast
  • 削除しつつ取得pop

テスト例(Pest)

use Illuminate\Support\Collection;

it('returns the last element', function () {
    $c = collect([1, 2, 3]);
    expect($c->last())->toBe(3);
});

it('returns last element matching callback', function () {
    $c = collect([1, 2, 3, 4]);
    expect($c->last(fn($n) => $n % 2 === 0))->toBe(4);
});

トラブルシュート(エラー別)

症状/エラー原因対処
null が返るコレクションが空 / 条件に一致なし$default を指定する
意図した要素と違うクロージャは「最後に一致」を返す仕様first を使う

参考リンク

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする