2

array_filter関数内に配列が必要です。

function filter($array, $check){
    return array_filter($array,function($val){return $val==$check;});
}

注: これは単純化されたシナリオです。

$checkはフィルター関数で定義されていないため、これは機能しませんが、1 つのglobal $check;レベルから変数をインポートできないため、どちらも使用できません。また、引数として渡すこともできません。

回避策はありますか?

4

2 に答える 2

6

use次のキーワードを使用できます。

function filter($array, $check) {
    return array_filter($array, function($value) use ($check) {
        return ($value == $check);
    });
}

global外部変数を通常の関数に持ち込むときにキーワードを使用するのと本質的に同じです。useの代わりにキーワードを使用する必要がある理由は、無名関数globalの動作に関係しています。つまり、それらはClosure クラスのオブジェクトに変換されます。

于 2013-02-04T07:26:14.110 に答える
-1
function filter($array, $check = $check_global){
    return array_filter($array,function($val){return $val == $check;});
}
于 2013-02-04T07:26:02.303 に答える