不能用变量过滤雄辩的集合

不能用变量过滤雄辩的集合

问题描述:

I can't filter a collection with a variable:

    $sections = Section::all();
    $courses = array("MATH282", "MATH201" , "GEOM202");
    foreach ($courses as $course)
    {
        $sections1 = $sections->filter(function($foo)
        {
            if ($foo->course == $course ) {
            return true;
            }
        });
    }

The filter works if the condition is a string. Everything else works.

我无法使用变量过滤集合: p>

  $ sections = Section :: all(); 
 $ courses = array(“MATH282”,“MATH201”,“GEOM202”); 
 foreach($ course as $ course)
 {
 $ sections1 = $  sections-> filter(function($ foo)
 {
 if if($ foo-> course == $ course){
 return true; 
} 
}); 
} 
   code>  pre> 
 
 

如果条件是字符串,则过滤器有效。 其他一切都有效。 p> div>

You are missing use() function in filter closure function. Your code should be as:

 $sections = Section::all(); $courses = array("MATH282", "MATH201" , "GEOM202");
 foreach ($courses as $course) { 
    $sections1 = $sections->filter(function($foo) use($course)  { 
       if ($foo->course == $course ) { 
            return true; 
       }
    });
 }