web-dev-qa-db-ja.com

Laravel:変数がコレクションかどうかを調べる

変数がコレクションであるかどうかを知りたいです。

Is_object()を使用することはできません。コレクションではない場合でもtrueになるためです。今のところ私はこれを使用し、それは動作します:

if(is_object($images) && get_class($images) != 'Illuminate\Database\Eloquent\Collection') {

しかし、私は非常にsoいので、別の解決策について質問するのに時間を費やすと思います。

何かアイデアはありますか?

22
Albert

使用できませんでした

if(is_a($images, 'Illuminate\Database\Eloquent\Collection')) {
    ....do whatever for a collection....
} else {
    ....do whatever for not a collection....
}

または

if ($images instanceof Illuminate\Database\Eloquent\Collection) {

}
34
P. Gearman

ここで使用されているクラスは正しくありません。一般的な意味では、基本クラスをテストする必要があります。

use Illuminate\Support\Collection;

....
if($images instanceof Collection) { 
 ....
}
18
Konchog

この答えで私が遭遇したエラーを修正したかっただけです。

instanceofは、(obj)または引用符なしのクラス名を除くことに注意してください。

$images instanceof Illuminate\Database\Eloquent\Collection

また、興味深いことに、instanceof over is_aを使用すると速度とパフォーマンスの違いがありますが、あなたが私のようで、最初にこの質問に対する答えを探していた場合、おそらくこれは関係ありません場所。

3
insitderp