web-dev-qa-db-ja.com

Laravel Eloquent Collectionの各メソッドでブレークまたは継続を使用する方法は?

Laravel Eloquent Collectionの各メソッドを使用して中断または続行する方法。私のコードは次のとおりです。

$objectives->each(function($objective) {
        Collection::make($objective)->each(function($action) {
            Collection::make($action)->each(function($success_indicator) {
                Collection::make($success_indicator)->each(function($success_indicator) {
                    echo 'hi';
                    continue;
                });
            });
        });
    });
21

continueを実行するには、内部関数からreturnを取り出します。 breakさん、.

Laravel 5.1+を使用している場合は、falseを返してループを解除できます。

$objectives->each(function($objective) {
    collect($objective)->each(function($action) {
        collect($action)->each(function($success_indicator) {
            collect($success_indicator)->each(function($success_indicator) {
                if ($condition) return false;
            });
        });
    });
});

古いバージョンのLaravelの場合、通常のforeachループを使用します。

$objectives->each(function($objective) {
    foreach ($objective as $action) {
        foreach ($action as $success_indicators) {
            foreach ($success_indicators as $success_indicator) {
                echo 'hi';
                break;
            }
        }
    }
});
28
Joseph Silber

true/falsetrue for continuefalse for breakを返すことができます

続行:

collect([1,2,3,4])->each(function ($item){
            if ($item === 2) {
                return true;
            }
            echo $item;
});

出力: 1 3 4

休憩:

collect([1,2,3,4])->each(function ($item){
            if ($item === 2) {
                return false;
            }
            echo $item;
});

出力: 1

30
vijaykumar