为数组的每个值应用函数

时间:2011-11-08 14:26:51

标签: php

考虑一个字符串数组:

$array = ('hello','hello1','hello2');

我需要preg_quote($value,'/');每个值。

我想避免使用foreach。数组步行不会工作,因为它也传递了密钥。

array_walk($array,'preg_quote','/'); //> Errors, 3rd param given to preg_quote

任何altrenative?

5 个答案:

答案 0 :(得分:18)

使用匿名函数(> = 5.3)

尝试array_map() [doc]
$array = array_map(function($value){
    return preg_quote($value, '/');
}, $array);

working demo

答案 1 :(得分:3)

使用array_map()

$newarray = array_map(function($a) {return preg_quote($a, '/');}, $input_array);

答案 2 :(得分:2)

你可以(用PHP 5.3):

array_map(function($elem) { return preg_quote($elem, '/'); }, $array);

在PHP< 5.2中没有烦人的函数(数组映射的第一个参数),在这种情况下你应该创建一个全局函数。

答案 3 :(得分:1)

使用foreach。它为此做出了共鸣。但如果你坚持:

array_walk($arr, create_function('&$val', '$val = preg_quote($val,"/");'));

答案 4 :(得分:0)

我们忘记提及的替代方案是:

function user_preg_quote($key,$value) {
   return preg_quote($value,'/');
}

array_walk($array,'user_preg_quote'); 

但是,一个简单的foreach也许会更好。