访问 laravel 闭包函数外的变量

Access variable outside laravel closure function

我正在使用 Laravel 8 和 PHP 8.

我有一个在全局范围内定义并分配了 null 值的变量。

我正在使用 laravel 集合的 each 函数来遍历每个元素。在这个闭包中,我有另一个闭包,它是集合的 filter 函数。我正在将过滤器 function 的输出分配给全局变量,它正在工作,但仅在 each 函数的闭包内。 (使用 xdebug 检查)

即使我使用 use() 函数在闭包内部传递变量,但在闭包外部变量再次变为 null 但它仍然不起作用。

$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 Docs.

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