Учитывая массив строк:
$array = ('hello','hello1','hello2');
Мне нужно preg_quote($value,'/');
каждое из значений.
Я хочу избежать использования foreach
. Массивная прогулка не работает, он также передает ключ.
array_walk($array,'preg_quote','/'); //> Errors, 3rd param given to preg_quote
Какой-нибудь эстрадный?
попробуйте array_map()
[doc] с анонимной функцией (> = 5.3)
$array = array_map(function($value){ return preg_quote($value, '/'); }, $array);
рабочая демонстрация
Вы можете сделать (с PHP 5.3):
array_map(function($elem) { preg_quote($elem, '/'); }, $array);
В PHP <5.2 нет никаких неприятных функций (первый аргумент карты массива), и в этом случае вы должны сделать глобальную функцию.
Использовать array_map()
$newarray = array_map(function($a) {return preg_quote($a, '/');}, $input_array);
Используйте foreach. Это сделано для этого резонанса. Но если вы настаиваете:
array_walk($arr, create_function('&$val', '$val = preg_quote($val,"/");'));
Альтернативой, которую мы забыли упомянуть, является:
function user_preg_quote($key,$value) { return preg_quote($value,'/'); } array_walk($array,'user_preg_quote');
Но, может быть, все-таки простой промах был бы лучше.