2011-11-08 14 views
3

の各値に対して関数を適用する:私はpreg_quote($value,'/');に値の各々を必要文字列の配列を考慮したアレイ

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

foreachを使用しないでください。配列の歩行doesntの仕事はbeacuseそれはまたキーを渡す。

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

任意のaltrenative?

+0

「foreach」を使用しない理由は何ですか? – sascha

+1

'array_map();を使用してください。http://php.net/array-map – Mob

答えて

13

匿名関数(> = 5.3)

あなたは(PHP 5.3で)行うことができます
$array = array_map(function($value){ 
    return preg_quote($value, '/'); 
}, $array); 

working demo

+1

この時点では、単純なforeach imoの方がいいです。もっと明確に。ありがとうthoはすぐに受け入れるでしょう – dynamic

+0

@ yes123はい、私もforeachを使用したいと思います。 – genesis

+0

PHP 5.3のみから –

2

array_map()[doc]を試してみてください:なしあるPHP < 5.2で

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

(アレイマップの最初の引数)、その場合はグローバル関数を作成する必要があります。

3

使用array_map()

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

使用するforeach。その共鳴のために作られた。しかし、あなたが主張する場合:私たちは言及を忘れてしまった代替がある

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

+0

コードを修正しました。 OOops。 –

+0

@genesis他にも問題はありますが、これは自分のものよりもどのように複雑なものになりますか?それが1行にあるという事実? –

+0

@ Mr.Disappointment私は確信していません、それはちょうど私のために厄介な臭いです – genesis

0

を:

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

array_walk($array,'user_preg_quote'); 

しかし、まだ簡単なforeachのは、おそらく良いだろう。

関連する問題