2017-06-09 2 views
2

だから私はlaravelコレクションフィルタで動作するようにしようとしていると私はそうのように見える特定のコールバックでコレクションをフィルタリングする必要があります。PHPで定義済みのコールバックフィルタを渡すにはどうしたらいいですか?

 $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; 
     } 

私はこれを行うことができますが、何ですか?これをどうやって渡すのですか?

答えて

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_filterfunctionを試すことができます

array_filter($participated->toArray(), "filterInventionCases"); 
関連する問題