Laravel Collection,用filter方法替换where方法

ced*_*emo 1 php laravel

我有一个集合,我使用该where方法,以便只获得匹配的元素:

myCollection->where('akey', $value);
Run Code Online (Sandbox Code Playgroud)

当我尝试使用filter方法对其进行转换时,它会失败:

myCollection->filter(function($value, $key){
   if($key === 'akey' && $value === $aValue)
      return true;
});
Run Code Online (Sandbox Code Playgroud)

我尝试使用过滤器,因为我想在集合中选择项目,如果它们的值等于多个值.(基本上在何处或何处,何处或何处).

nak*_*kov 5

我假设它$aValue是在filter函数之外定义的,你应该将它传递给回调函数,如下所示:

myCollection->filter(function($value, $key) use ($aValue) {
  if($key === 'akey' && $value === $aValue)
      return true;
});
Run Code Online (Sandbox Code Playgroud)

- 编辑 -

根据您的示例使用我认为应该工作的地方.

myCollection->filter(function($item) use ($aValue) {
   return $item->aKey === $aValue;
});
Run Code Online (Sandbox Code Playgroud)