Php laravel闭包函数外部的访问变量
我使用的是Laravel8和PHP8 我在全局范围中定义了一个变量,并将其赋值为Php laravel闭包函数外部的访问变量,php,laravel,closures,Php,Laravel,Closures,我使用的是Laravel8和PHP8 我在全局范围中定义了一个变量,并将其赋值为nullvalue 我正在使用laravel集合的each函数迭代每个元素。在这个闭包中,我有另一个闭包,它是collection的filter函数。我将filter函数的输出赋值到全局变量中,它正在工作,但仅在每个函数的闭包内。(使用xdebug检查) 在闭包外部,变量再次变为null,尽管我使用use()函数在闭包内部传递了变量,但它仍然不起作用 $filtered = null; $product->e
null
value
我正在使用laravel集合的each
函数迭代每个元素。在这个闭包中,我有另一个闭包,它是collection的filter
函数。我将filter函数
的输出赋值到全局变量中,它正在工作,但仅在每个
函数的闭包内。(使用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
我已经提到了&但是运气不好
有人可以指导我如何将
过滤器
函数的输出分配给全局变量吗?要获得闭包之外的更改效果,需要使用引用,如下所示
要获得闭包之外的更改效果,需要使用引用,如下所示
我试过了,但看起来我还得再等6分钟好的,所以请在那个限制之后再做,提前谢谢。我试过了,但看起来我还得再等6分钟好的,所以请在那个限制之后再做,提前谢谢。
$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;