web-dev-qa-db-ja.com

外部で計算された変数を使用するコールバック関数

基本的に私はこのようなことをしたいと思います:

$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$avg = array_sum($arr) / count($arr);
$callback = function($val){ return $val < $avg };

return array_filter($arr, $callback);

これは実際に可能ですか?無名関数の外部で変数を計算し、内部で使用しますか?

45
Breno Gazzola

useキーワードを使用して、親スコープから変数を継承できます。あなたの例では、あなたは次のことをすることができます:

$callback = function($val) use ($avg) { return $val < $avg; };

詳細については、マニュアルページの 無名関数 を参照してください。

130
mfonda