我正在使用map()
函数对集合中的每个项目执行逻辑:
$result = $payments->map(function($payment){
$payment = app('App\Service\Service1')::sendPayment();
if(!payment){
return false;
}
$payment = Payment::findOrFail($payment->id);
$payment->sent_at = Carbon::now();
$payment->save();
});
问题:
如果发送付款失败,我正在检查if语句,在这种情况下我返回false。
所以我期待当我在map()
函数上返回false以跳过集合中的当前项并处理下一个项时?这是map()
函数的正确行为,与each()
答案 0 :(得分:0)
each
方法迭代集合中的项目并将每个项目传递给回调:
$collection = $collection->each(function ($item, $key) {
//
});
如果您想停止迭代这些项目,可以从回调中返回false
:
$collection = $collection->each(function ($item, $key) {
if (/* some condition */) {
return false;
}
});
map
方法遍历集合并将每个值传递给给定的回调。回调可以自由修改项目并将其返回,从而形成一个新的修改项目集合:
$collection = collect([1, 2, 3, 4, 5]);
$multiplied = $collection->map(function ($item, $key) {
return $item * 2;
});
$multiplied->all();
// [2, 4, 6, 8, 10]