在一行PHP中一次将多个函数回调应用于array_map

时间:2019-05-13 17:53:42

标签: php arrays array-map

假设我有一个名为$_POST的{​​{1}}数组

然后,我运行以下回调users。但是,可以说我还有另外两个要运行的功能,例如real_escape_stringclean。可以一行完成吗?

trim

1 个答案:

答案 0 :(得分:0)

请查看array_map()的PHP文档的相应部分。请注意,该函数接受一个回调函数以及紧随其后的任意数量的数组,因此无法将多个回调放入单个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'));

有很多方法可以解决此问题。您需要选择最适合您的用例的一个。