2011-11-23 1 views
10

array_filter関数を使用して、配列をフィルタリングしたいとします。水のもとでcall_user_funcを使うことを示唆していますが、クラス/オブジェクトのコンテキスト内での使用方法については言及していません。Array_Filterオブジェクトのコンテキストでプライベートコールバック

いくつかの擬似コード私の目標を説明するために:

class RelatedSearchBlock { 
    //... 
    private function get_filtered_docs() { 
    return array_filter($this->get_docs(), 'filter_item'); 
    } 

    private filter_item() { 
    return ($doc->somevalue == 123) 
    } 
} 

私はarray($this, 'filter_item')'filter_item'を変更する必要がありますか?私は何が欲しいのですか?

答えて

36

はい:

return array_filter($this->get_docs(), array($this, 'filter_item')); 

documentation for the callback typeを参照してください。

+0

素晴らしい情報!静的メソッドを使用している場合は、フィルタ関数を使用してクラス名を渡す必要があります。これを行うには 'array($ this、 'filter_item')を' array(__ CLASS__、 'filter_item') 'に置き換えることができます。 –

+0

filter_item()メソッドはarray_filter()を呼び出すオブジェクト、または$ this-> get_docs()の各オブジェクトで呼び出されますか? – Arild

+1

@Arild本質的に、 '$ this-> filter_item($ doc)'は 'get_docs()'から返される各項目に対して呼び出されます。 – deceze

関連する問題