Применение нескольких обратных вызовов функций к array_map одновременно в одной строке php - PullRequest
0 голосов
/ 13 мая 2019

Допустим, у меня есть массив из $_POST с именем users

Затем я запускаю следующий обратный вызов real_escape_string.Но допустим, у меня есть еще пара функций, которые я бы хотел запустить, например clean и trim.Возможно ли сделать это в одну строку?

$users = array_map(array($GLOBALS['conn'], 'real_escape_string'), $_POST['users']);

1 Ответ

0 голосов
/ 13 мая 2019

Пожалуйста, просмотрите соответствующий раздел документации PHP для array_map () .Обратите внимание, что функция принимает одну функцию обратного вызова и любое количество массивов, следующих за ней, что делает невозможным размещение нескольких обратных вызовов в одном вызове array_map().Если вы хотите применить несколько функций, вам нужно будет использовать вложенные вызовы array_map() или передать анонимную функцию.Пример:

// Nesting.
array_map('trim', array_map('strtoupper', array('  input1  ', ' Input2')));

// Anonymous function.
array_map(function($elem) {
    return trim(strtoupper($elem));
}, array('  input1  ', ' Input2'));

Вы также можете перебрать список обратных вызовов, например, так:

$my_callbacks = array('trim', 'strtoupper');
array_map(function($elem) use ($my_callbacks) {
    foreach($my_callbacks as $callback) {
        $elem = $callback($elem);
    }
    return $elem;
}, array('  input1  ', ' Input2'));

Существует множество способов решения этой проблемы.Вам нужно будет выбрать тот, который лучше всего подходит для вашего случая использования.

...