- カテゴリ: 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 | `callable | null` | 任意 | null |
$default | mixed | 任意 | 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 を使う |

