2011-11-08 2 views
3

의 각 값에 대한 함수를 적용 : I preg_quote($value,'/');는 상기 각각의 값이 필요문자열의 배열을 고려하여 배열

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

.

나는 foreach을 사용하지 않으려합니다. 배열 도보 doesnt '일 beacuse 그것은 너무 열쇠를 전달합니다.

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

모든 altrenative?

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

PHP <에서 5.2에는이 있습니다 :

+0

'foreach'를 사용하지 않으려 고하는 이유는 무엇입니까? – sascha

+1

'array_map(); 사용 http://php.net/array-map – Mob

답변

13

$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

당신은 (PHP 5.3) 할 수있다 (5.3> =) 익명 함수와 array_map()[doc] 시도하지 annoymous 함수 (배열 맵의 첫 번째 인수)와 전역 함수를 만들어야합니다.

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 문제는 제쳐두고,이게 더 이상 "복잡합니다"(나 혼란스럽게 사용할 것입니다) 자신의 것보다? 그것이 한 줄에 있다는 사실? –

+0

@ Mr.Disappointment 잘 모르겠다. 냄새가 심하다. – genesis

0

대안은 다음과 같습니다 :

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

array_walk($array,'user_preg_quote'); 

을하지만 여전히 간단한 foreach는 어쩌면 더 좋을 것이다 그러나 당신은 주장합니다.

관련 문제