every — すべての要素が条件を満たすかを判定する

collection
  • カテゴリ: collection
  • 掲載バージョン: Laravel 12・PHP 8.4
  • 名前空間 / FQCN / コマンド: Illuminate\Support\Collection::every
  • 関連: some / contains / filter / reject / ensure
  • 変更履歴: 特に変更なし(Laravel 12 時点)

要点(TL;DR)

  • コレクション内の全要素が条件を満たすかを bool で返す
  • collect([1,2,3])->every(fn($v) => $v > 0)
  • 罠: 空コレクションは trueeach と混同しない/真偽値なのでチェーン不可

概要

every はコレクション内の各要素にコールバックを適用し、すべてが条件を満たす場合に true を返します。空のコレクションでは常に true(空虚真)となる点が実務での判断に影響します。CollectionLazyCollection は同じ Enumerable 契約に基づくため、どちらでも同様に利用できます。(Laravel) (Laravel)

構文 / シグネチャ

bool Illuminate\Support\Collection::every(callable $callback)
  • 引数(表) 引数 型 必須 既定値 説明 $callback callable($value, $key): bool はい なし 要素ごとに評価する真偽関数
  • 戻り値bool(全要素が条件を満たせば true。コレクションが空でも true) (Laravel)
  • 例外/副作用:メソッド自体に副作用なし。コールバック内で例外を投げた場合はその例外が伝播。

使用例

最小例

<?php

declare(strict_types=1);

use Illuminate\Support\Collection;

require __DIR__ . '/vendor/autoload.php';

$ok = collect([3, 4, 5])->every(fn (int $v, int $k) => $v > 2);
// true

$ng = collect([1, 2, 3])->every(fn (int $v) => $v > 2);
// false

$emptyIsTrue = collect()->every(fn () => false);
// true(空は常に true)

実務例

<?php

use Illuminate\Support\Collection;
use App\Models\User;

// 例: メール認証が済んだユーザーだけで一覧を表示したい
$users = User::whereIn('id', [1,2,3])->get();

/** @var bool $allVerified */
$allVerified = $users->every(fn (User $u) => $u->email_verified_at !== null);

if (! $allVerified) {
    // 1人でも未認証がいればリダイレクト
    return redirect()->route('users.verify.notice');
}

// すべて認証済みなので処理続行…

よくある落とし穴・注意

  • 空は true:検索結果が空でも合格扱いになる。空の場合の分岐を別途設ける(isEmpty() と併用)。(Laravel)
  • チェーンできない:戻り値が bool のため、後続のコレクション操作につなげられない
  • each と混同しがち:each は反復処理(戻り値は元コレクション)、every判定
  • 性能:要素数に比例(概ね O(n))。重い I/O をコールバック内で行わない。

代替・関連APIとの比較

  • some1つでも条件を満たせば true。存在チェックに適する。
  • contains:値/キー・値組での包含判定。単純一致ならこちら。
  • filter / reject:サブセットを作る抽出用。判定ではなく結果を次処理に回したいとき。
  • ensure:要素のを検証。内容の条件ではなく型を縛りたいときに使用。(Laravel)

テスト例(Pest)

<?php

use Illuminate\Support\Collection;

it('returns true only when all items pass', function () {
    expect(collect([2, 4, 6])->every(fn ($v) => $v % 2 === 0))->toBeTrue();
    expect(collect([2, 3, 4])->every(fn ($v) => $v % 2 === 0))->toBeFalse();
    expect(collect()->every(fn () => false))->toBeTrue(); // 空は true
});

コレクション特性

  • チェーン可否:不可(戻り値 bool
  • 破壊的/非破壊:非破壊
  • キー保持:該当なし(bool 返却)
  • LazyCollection 対応:可(Enumerable で共通) (Laravel)
  • 計算量の目安:O(n)
  • 入出力対応表 入力(例) 条件 出力 [3,4,5] $v > 2 true [1,2,3] $v > 2 false [] どんな条件でも true

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

症状/エラー原因対処
Call to a member function ... on nullコールバック内で null を想定せずメソッド呼び出し事前に isset / null チェック、または安全演算子(?->)を使う
判定が意図せず trueコレクションが空isEmpty() で空判定を分岐してから every を実行
常に false になるコールバックの比較ロジック誤り一時 var_dump/dd$value/$key を確認しロジック修正

参考リンク

  • Laravel公式ドキュメント: Collections / every(空は true の挙動を含む) (Laravel)
  • Laravel公式ドキュメント: Lazy Collections / Enumerable 契約(両者で共通メソッド) (Laravel)
  • Laravel公式ドキュメント: Eloquent Collections(基底 Collection のメソッド継承) (Laravel)

長野県・北アルプス地方在住のフリーランスWebプログラマー。
「落ち着くためのWeb開発」をテーマに、訪れる人が安心して使えるサービスづくりを心がけています。

LaravelやWordPressなどのWebアプリケーション開発を得意とし、技術面の安定性はもちろん、運用後も長く活用できる設計を大切にしています。
静かな山間の暮らしから生まれる視点で、シンプルかつ本質的な解決策をご提案します。

野鳥観察も趣味のひとつで、特にミソサザイ(Wren)に魅力を感じています。
小さな体に反して力強く上向きの尾羽、そして澄んだ鳴き声が遠くまで響く姿に、静かな存在感と芯の強さを感じます。
このサイト名「Laravel Wren」には、そんなミソサザイのように、小さくても確かな価値を届けたいという想いを込めています。

信頼できるパートナーとして、そして気軽に相談できる存在として、あなたのWebプロジェクトをサポートします。

Yudai Tsuyuzakiをフォローする