PHP 中闭包内的未定义变量

Undefined variable inside a closure in PHP

我对 Laravel、PHP 和 Blade

有疑问
@for ($i=1; $i <= 12; $i++)
{!!           
    ($substance->consumptions->filter(function($consumption, $key){
        return $consumption->date->month == $i;
    })->sum('quantity'))
!!},
@endfor

未定义变量:i(查看:/Users/luisalcaras/Projects/piba_web/resources/views/index.blade.php)

您必须使用 'use' 关键字将变量从父作用域传递到闭包:

@for ($i=1; $i <= 12; $i++)
{!!           
    ($substance->consumptions->filter(function($consumption, $key) use ($i){
        return $consumption->date->month == $i;
    })->sum('quantity'))
!!},
@endfor

希望对您有所帮助

试试这个?

@for ($i=1; $i <= 12; $i++)
{!!           
    ($substance->consumptions->filter(function($consumption, $key){
        global $i;
        return $consumption->date->month == $i;
    })->sum('quantity'))
!!},
@endfor