我有一个方法MyClass#foo(array $array, $argX, $argY, $argZ)
,并希望将其应用于$myArray
的每个元素。
我已经使用array_map(...)
和array_walk(...)
尝试了此操作,但对于具有自定义签名的功能,它们不够灵活。
如何在PHP中将具有多个参数的方法应用于数组的每个元素(不用带循环的迭代)?
答案 0 :(得分:3)
您可以使用anonymous function(可能与use
关键字结合使用以访问$ arg *变量):
array_map(function($item) use ($argX, $argY, $argZ) {
return MyClass::foo($item, $argX, $argY, $argZ);
}, $your_array_here);
答案 1 :(得分: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);