我有一個方法MyClass#foo(array $array, $argX, $argY, $argZ)
並希望將其應用於$myArray
的每個元素。如何將具有多個參數的函數應用於PHP中數組的每個元素?
我試過這個array_map(...)
和array_walk(...)
,但它們對於具有自定義簽名的函數不夠靈活。
如何將具有多個參數的方法應用於PHP中數組的每個元素(無需迭代循環)?
我有一個方法MyClass#foo(array $array, $argX, $argY, $argZ)
並希望將其應用於$myArray
的每個元素。如何將具有多個參數的函數應用於PHP中數組的每個元素?
我試過這個array_map(...)
和array_walk(...)
,但它們對於具有自定義簽名的函數不夠靈活。
如何將具有多個參數的方法應用於PHP中數組的每個元素(無需迭代循環)?
如果您運行的是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);
可以anonymous function(也許結合的use
關鍵字有機會獲得$ ARG *變量)使用:
array_map(function($item) use ($argX, $argY, $argZ) {
return MyClass::foo($item, $argX, $argY, $argZ);
}, $your_array_here);