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

Laravel集合each方法外部变量访问报错:Undefined variable: headers

解决Laravel集合each方法中变量未定义的问题

你遇到的Undefined variable: headers错误,核心原因是PHP闭包的作用域限制——内部闭包无法自动访问外部闭包中定义的变量,必须显式通过use关键字将变量引入内部闭包的作用域。

咱们来看你的代码:在Excel::load的外层闭包里定义了$headers,但在嵌套的$reader->each闭包里直接访问它,这个内部闭包默认是看不到外层的$headers的。

修改后的代码

public function bulkCoding(Request $request) { 
    Excel::load($request->file, function($reader) { 
        $headers = $reader->get()->first()->keys(); 
        // 遍历所有工作表时,通过use引入$headers变量
        $reader->each(function($sheet) use ($headers) { 
            $headers->each(function ($title) { 
                dd($title); 
            }); 
        }); 
    }); 
}

关键说明

  • 在$reader->each的闭包参数后面加上use ($headers),就把外层闭包的$headers变量传递到了内部闭包的作用域里,这样就能正常访问了。
  • 如果后续需要在内部闭包里修改$headers的值,要加上引用符号&,写成use (&$headers),不过你这里只是读取表头,所以不需要引用。

另外补充一点:如果你的需求是获取每个工作表自己的表头,而不是第一个工作表的表头,那应该把$headers = $sheet->first()->keys()放到$reader->each的闭包里,这样每个工作表都能拿到自己的专属表头,这算是个额外的优化建议~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:32:00