不能用变量过滤雄辩的集合
问题描述:
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;
}
});
}