如何在PHP中将具有多个参数的函数应用于数组的每个元素?

时间:2016-09-20 18:50:22

标签: php arrays array-map array-walk

我有一个方法MyClass#foo(array $array, $argX, $argY, $argZ),并希望将其应用于$myArray的每个元素。

我已经使用array_map(...)array_walk(...)尝试了此操作,但对于具有自定义签名的功能,它们不够灵活。

如何在PHP中将具有多个参数的方法应用于数组的每个元素(不用带循环的迭代)?

2 个答案:

答案 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);

文档:http://php.net/manual/en/functions.anonymous.php