-2

我有一个方法MyClass#foo(array $array, $argX, $argY, $argZ),想把它应用到$myArray.

我已经尝试过使用array_map(...)and array_walk(...),但是对于具有自定义签名的函数来说,它们不够灵活。

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

4

2 回答 2

3

您可以使用匿名函数(可能与use关键字结合使用以访问 $arg* 变量):

array_map(function($item) use ($argX, $argY, $argZ) {
    return MyClass::foo($item, $argX, $argY, $argZ);
}, $your_array_here);
于 2016-09-20T18:55:44.307 回答
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

于 2016-09-20T18:55:24.370 回答