You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel PHP:如何在map函数内部访问外部变量?

解决Laravel集合map闭包中访问外部变量的问题

你碰到的这个错误是因为PHP的匿名函数(闭包)默认不会自动继承外部作用域的变量,所以在map的回调里直接调用$x会提示未定义。要让闭包能访问外部的$x,只需要在闭包的参数列表后面加上use ($x)声明即可。

修正后的完整代码示例

public function test() {
    $x = 10;
    $collection = collect([0, 10, 20]);
    $collection = $collection->map(function ($item, $key) use ($x) {
        return $item + $x;
    });
    // 此时$collection的结果会是 [10, 20, 30]
}

额外说明

  • 如果后续需要在闭包里修改外部的$x变量,要在use里加上引用符号&,写成use (&$x);不过你的场景只需要读取$x,所以不需要引用。
  • 这是PHP闭包的原生特性,和Laravel集合本身无关,所有PHP匿名函数要访问外部作用域变量,都得通过use关键字明确声明要捕获的变量。

内容的提问来源于stack exchange,提问作者Janaka Pushpakumara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:37:52