如何使用休息或继续使用Laravel Eloquent Collection的每种方法?

Nas*_*jim 16 php collections laravel eloquent laravel-5

如何使用休息或继续使用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;
                });
            });
        });
    });
Run Code Online (Sandbox Code Playgroud)

vij*_*mar 35

我们可以返回真/假 truecontinue,falsebreak

继续:

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

输出: 1 3 4

打破:

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

输出: 1

  • 实际上,你可以只使用“return;”作为“继续”,因为为了执行“break”,你需要显式返回“false”。 (6认同)

Jos*_*ber 30

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;
            });
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

对于旧版本的Laravel,请使用常规foreach循环:

$objectives->each(function($objective) {
    foreach ($objective as $action) {
        foreach ($action as $success_indicators) {
            foreach ($success_indicators as $success_indicator) {
                echo 'hi';
                break;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • @Roland 跳过,只是“返回”什么都不做。将退出函数的当前调用,并继续循环中的下一项。 (3认同)
  • 例如 5.6 的文档只是说明如何“突破”:https://laravel.com/docs/5.6/collections#method-each 而不是如何跳过当前项目。 (2认同)