2016-09-20 10 views
-2

私はメソッドMyClass#foo(array $array, $argX, $argY, $argZ)を持っており、$myArrayのすべての要素に適用したいと考えています。複数の引数を持つ関数をPHPの配列のすべての要素に適用するにはどうすればよいですか?

これはarray_map(...)array_walk(...)で試しましたが、カスタムシグネチャを持つ関数には十分な柔軟性がありません。

複数の引数を持つメソッドをPHPの配列のすべての要素に適用するにはどうすればいいですか?

答えて

0

PHP 5.3以降を実行している場合は、コールバックパラメータとして無名関数(またはクロージャ)をarray_mapに渡すことができます。あなたは匿名関数の内部で変数を使用したい場合は

$newArray = array_map(function($val){ 
    // Whatever code you want using `$val`. 
    // Make sure to `return` a value, though. 
}, $myArray); 

は、その後、あなたはそれらをキャプチャするためにuseキーワードを使用することができます。

$newArray = array_map(function($val) use($argX, $argY, $argZ){ 
    // Whatever code you want using `$val`, 
    // and also `$argX`, `$argY`, `$argZ`. 
    // Make sure to `return` a value, though. 
}, $myArray); 

ドキュメント:http://php.net/manual/en/functions.anonymous.php

3

あなたは($ののarg *変数へのアクセス権を持っているかもしれないuseキーワードと組み合わせて)anonymous functionを使用することができます。

array_map(function($item) use ($argX, $argY, $argZ) { 
    return MyClass::foo($item, $argX, $argY, $argZ); 
}, $your_array_here); 
関連する問題