Laravel 在变换方法中继续循环

问题描述

continue 中循环时 transform() 的等价物是什么?

我想做这样的事情:

$collection->transform(function($item) {
    if ($condition) {
        continue;
    }
    return $item['key'];
});

一种选择是在 ->reject() 完成后执行 transform,但有没有办法在循环时执行此操作?

P.S:目标是实际返回一个一个元素的新集合。例如

[
    '1','2',]

=> when $condition:

[
    '1',]

$collection->transform(function($item) {
    if ($condition) {
        return ['']; // <- This didn't work!
    }
    return $item['key'];
});

解决方法

您可以使用 collection->reduce() 方法实现此目的:

$collection->reduce(function($result,$item) {
    if (!some_condition_etc...) {
        $result->push($item['key']);
    }
    return $result;
},collect());