count — 件数を返すメソッド

collection
  • カテゴリ: collection
  • 掲載バージョン: Laravel 12・PHP 8.4
  • 名前空間 / FQCN: Illuminate\Support\Collection::count
  • 関連: sum / isEmpty / countBy / collect
  • 変更履歴: なし(初期から存在)

要点(TL;DR)

  • コレクション内の要素数を返す基本メソッド
  • collect($items)->count() の1行で使える
  • count(null) や空配列は 0 を返す/count() は遅延評価ではない(LazyCollection では注意)

概要

count はコレクション内の要素数を取得する最も基本的なメソッドです。
配列の count() と同じ用途ですが、コレクションチェーン内で扱える点が利点です。
統計処理や条件分岐、バリデーション前の件数把握など、実務で頻出します。

構文 / シグネチャ

public function count(): int

引数

引数必須既定値説明
なし

戻り値

  • int:コレクションに含まれる要素数

例外 / 副作用

  • 例外なし
  • LazyCollection では全件イテレーションが発生(性能注意)

使用例

最小例

<?php

use Illuminate\Support\Collection;

$numbers = collect([1, 2, 3]);
echo $numbers->count(); // 3

実務例(DBクエリ結果の件数確認)

<?php

use App\Models\User;

// 退会済ユーザーを除外して件数確認
$activeUsers = User::where('is_active', true)->get();

if ($activeUsers->count() > 1000) {
    // 例えばバッチ処理を分割する判断など
    logger('ユーザー数が多いため、処理を分割します。');
}

よくある落とし穴・注意

  • LazyCollection の count() は全件読み込む
    → 大規模処理では ->count() ではなく SQL の ->count()(Eloquent builder)を使う
  • コレクションが null や空配列でも 0 を返す
    null 判定は別途必要
  • マルチディメンション配列でも トップ階層 の数のみカウント

代替・関連APIとの比較

メソッド使いどころ
count()そのまま件数を取得
isEmpty()0 件かどうかだけ知りたい場合
countBy()値ごとの出現頻度を集計
sum()数値列の合計が欲しい場合

選定基準: 単純な件数 → count、値ごとの集計 → countBy

テスト例(Pest)

it('counts collection items', function () {
    $c = collect(['a', 'b', 'c']);
    expect($c->count())->toBe(3);
});

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

症状/エラー原因対処
件数が常に 0collect(null) が返されたnull チェックを追加
処理が遅いLazyCollection を全件走査しているDB の ->count() を使用する

参考リンク

レン (Wren)

こんにちは。レンです。

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

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

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

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

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

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