- カテゴリ: 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)- 罠: 空コレクションは true/
eachと混同しない/真偽値なのでチェーン不可 
概要
every はコレクション内の各要素にコールバックを適用し、すべてが条件を満たす場合に true を返します。空のコレクションでは常に true(空虚真)となる点が実務での判断に影響します。Collection と LazyCollection は同じ 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との比較
some:1つでも条件を満たせば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 > 2true[1,2,3]$v > 2false[]どんな条件でもtrue 
トラブルシュート(エラー別)
| 症状/エラー | 原因 | 対処 | 
|---|---|---|
Call to a member function ... on null | コールバック内で null を想定せずメソッド呼び出し | 事前に isset / null チェック、または安全演算子(?->)を使う | 
判定が意図せず true | コレクションが空 | isEmpty() で空判定を分岐してから every を実行 | 
常に false になる | コールバックの比較ロジック誤り | 一時 var_dump/dd で $value/$key を確認しロジック修正 | 

  
  
  
  