Как применить функцию с несколькими аргументами к каждому элементу массива в PHP?

У меня есть метод MyClass#foo(array $array, $argX, $argY, $argZ) и хочу применить его к каждому элементу $myArray,

Я пробовал это с array_map(...) а также array_walk(...), но они недостаточно гибки для функции с пользовательской подписью.

Как применить метод с несколькими аргументами к каждому элементу массива в PHP (без итерации с циклом)?

-2

Решение

Вы можете использовать анонимная функция (возможно в сочетании с use ключевое слово для доступа к переменным $ arg *):

array_map(function($item) use ($argX, $argY, $argZ) {
return MyClass::foo($item, $argX, $argY, $argZ);
}, $your_array_here);
3

Другие решения

Если вы используете 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);

Docs: http://php.net/manual/en/functions.anonymous.php

0

По вопросам рекламы [email protected]