php - 在 laravel 闭包函数之外访问变量
问题描述
我正在使用 Laravel 8 和 PHP 8。
我有一个在全局范围内定义并赋值的null
变量。
我正在使用 laravel 的集合each
函数来迭代每个元素。在这个闭包内我有另一个闭包,它是集合的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
有人可以指导我如何将filter
函数的输出分配给全局变量吗?
解决方案
要在闭包之外获得更改效果,您需要使用参考,像这样
$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;
推荐阅读
- gradle - 任务运行后如何失败?又如何忽略失败但在下次运行时重复任务?
- javascript - 搜索另一个对象数组中的值列表,并使用单个 for 循环更改对象数组中的一个键
- oracle - 在 Oracle 中使用表/视图创建时出现编译错误的函数不存在
- javascript - 如何在 Asyncstorage 中设置多个值
- c# - 如何在datagridview中一次选择第1行并使用消息框显示
- java - 直接使用 aws s3 将图像加载到 imageview 而不下载到 android 中的本地存储
- maven - 如何修改 settings.xml 以便如果本地不存在依赖项,请从 Internet 获取
- java - 带有 GraphQL 的 Spring Boot 应用程序运行但无法构建包
- postgresql - 更新的查询在休眠状态下不工作
- mysql - 插入mysql自定义变量后值会改变