我使用的是Laravel 8和PHP 8。
我在全局作用域中定义了一个变量,并为其分配了null值。
我使用了laravel集合的each函数来迭代每个元素。在这个闭包中,我还有另一个闭包,那就是集合的filter函数。我将filter function的输出赋值给全局变量,它正在工作,但仅在each函数的闭包内。(使用xdebug检查)
在闭包外部,变量再次变为null,即使我在闭包内部使用use()函数传递了变量,但它仍然不起作用。
$filtered = null;
$product->each(function ($price) use($coupons, $filtered) {
$filtered = $coupons->filter(function ($coupon) use($price) {
if (!empty($price->iso_code)) {
if ($coupon->iso_code = $price->iso_code) {
$a = $price->currency_code;
$b = $coupon->currency_code;
return $a == $b;
}
}
return $price->currency_code = $coupon->currency_code;
});
});
return $filtered; //null我已经推荐了this answer & this also,但没有运气。
有人可以指导我如何将filter函数的输出赋给全局变量吗?
发布于 2021-02-26 22:29:04
要在闭包之外获得更改效果,您需要使用引用,如下所示
$filtered = null;
$product->each(function ($price) use($coupons, &$filtered) {
$filtered = $coupons->filter(function ($coupon) use($price) {
if (!empty($price->iso_code)) {
if ($coupon->iso_code = $price->iso_code) {
$a = $price->currency_code;
$b = $coupon->currency_code;
return $a == $b;
}
}
return $price->currency_code = $coupon->currency_code;
});
});
return $filtered;https://stackoverflow.com/questions/66387557
复制相似问题