2013-08-01 2 views
12

나는 array_map herearray_map 인라인은 익명 함수

인라인 익명 함수를 테스트하고 그것은 작동하지만 user_meta와 같은 시도 할 때 그것은

$user_meta = Array ([interest] => Array ([0] => Array) [type] => 
    Array ([0] => Array) [user_status] => Array ([0] => deny) 
    [firstname] => Array ([0] =>) [lastname] => Array ([0] => B) 
    [email] => [email protected]) 

    $user_meta = array_map(function($a) { return $a[0]; },$user_meta); 

"오류 구문 분석 .. 작동하지 않습니다 : 예기치 않은 구문 오류,

here is the test link showing error

+4

입니다 인라인 익명 함수는 PHP 5.3+에서만 작동합니다 –

+0

P.S. 포맷 인 print_r() 출력은 $의 user_meta 배열의 당신의 정의는 PHP 배열 유효하지 않습니다 –

+0

@Paulpro 왜 형식 변경을 롤백 했습니까? – jmattheis

답변

10

"에서 T_FUNCTION, 기대 '는)'는 array_map 라인 아무 문제 없습니다 그러나 그것 앞에는 모든 것이 잘못되었습니다. PHP 코드가 아닌 print_r의 결과입니다. 게시 한 두 링크에서 배열을 정의하는 방법을 비교하십시오.

+0

인수를 사용하여 배열을 전달할 때 동일한 오류가 발생합니다. 명시 적으로 함수를 호출하여 작동하도록 만들 수 있습니다 .. [here] (http://3v4l.org/F0Sac) –

+0

어떤 PHP 버전이 있습니까? 대부분의 사람들은 적어도 5.3을 가지고 있고 코드는 5.3 이상에서 잘 작동합니다. – Paulpro

+0

PHP 5.5 만 사용하고 있습니다. 업데이트 된 링크를 확인할 수 있습니다. 오류가 표시됩니다. –

12

도움이 되길 바랍니다. 키워드 기능과 매개 변수 사이에 공백이 있어야합니다. 그래서이 작동합니다 :

$user_meta = array_map(function ($a) { return $a[0]; },$user_meta); 
, 그것은 인간의 가독성
+0

이것은 키워드 함수와 매개 변수 사이에 공백이 있어야한다는 점을 제외하면 좋은 대답입니다. 내가 공간을 없애고 아무런 문제가 없기 때문에. –