在 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函数的输出分配给全局变量吗?

米凯尔·斯拉皮扬

要在闭包之外获得更改效果,您需要使用引用,像这样

PHP 文档

$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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章