所以我正在尝试使用laravel集合过滤器,我必须使用某种回调过滤集合,如下所示:
$cases->filter(function ($item) {
return $item->invention_id != '' || $item->invention_id != null;
});
$total->filter(function ($item) {
return $item->invention_id != '' || $item->invention_id != null;
});
$participated->filter(function ($item) {
return $item->invention_id != '' || $item->invention_id != null;
});
那么我如何抽象这个函数然后在所有3中传递它?也许我的PHP基础知识在这里很弱但我不确定。
function filterInventionCases($item)
{
return $item->invention_id != '' || $item->invention_id != null;
}
我能做到这一点,但接着是什么?我如何通过它?
答案 0 :(得分:1)
您可以在filter
回调函数中调用回调。通过OOP
$cases->filter(function ($item) {
$this->filterInventionCases($item);
});
$total->filter(function ($item) {
$this->filterInventionCases($item);
});
$participated->filter(function ($item) {
$this->filterInventionCases($item);
});
或
$cases->filter(function ($item) {
call_user_func('filterInventionCases', $item);
});
$total->filter(function ($item) {
call_user_func('filterInventionCases', $item);
});
$participated->filter(function ($item) {
call_user_func('filterInventionCases', $item);
});
Laravel filter
需要可调用类型的回调。或者您可以尝试使用支持函数字符串名称的PHP array_filter
function
array_filter($participated->toArray(), "filterInventionCases");