PHP 의 array_map 함수 개념과 사용법 총정리
PHP 의 array_map
함수에 대해 알아봅시다.
array_map
array_map
함수가 하는 일은 아주 심플합니다. 배열(array
)의 각 원소에 원하는 함수를 적용시키고 배열로 반환하는 기능을 합니다. 기본적인 사용법은 아래와 같습니다.
array_map( callback_function, array1 [, array2 ...] );
당연한 이야기지만 array_map
함수에 필수로 들어가야 하는 파라미터는 적용시킬 함수(callback_function
)와 최소 1개의 array
입니다. 아래 예제를 통해 실제 사용방법을 알아봅시다.
예제1: 배열의 각 원소 앞, 뒤 공백 제거하기
배열의 각 원소의 앞, 뒤 공백을 제거해 보도록 합시다. 특정 문자열의 앞, 뒤 공백을 제거할때는 trim
함수를 사용하면 됩니다.
$trimmed = array_map( 'trim', array1 )
아주 간단하죠? $trimmed
에는 array1
의 각 원소가 앞, 뒤 공백이 제거된 배열이 저장됩니다.
예제1-1: trim 함수를 적용하기 심화 예제
배열의 각 원소에 trim
함수를 적용하는 것에 대한 심화 예제를 살펴봅시다.
일반 텍스트박스에서 여러 값들을 쉼표를 사용해 사용자에게 입력 받은 후, 이를 배열로 만들어 활용해야 하는 상황입니다(예를 들면 워드프레스에서 포스트를 작성할 때 태그 입력 박스 처럼). 보통의 경우라면 사용자는 아래와 같은 방식으로 입력 할 것입니다.
alpha,bravo,charlie,delta
이를 배열로 받기 위해서는 explode
함수를 사용하면 됩니다.
$str = 'alpha,bravo,charlie,delta';
$final = explode( ',', $str );
$final
에는 쉼표로 구분된 단어들이 각각의 원소로 된 배열이 저장됩니다.
하지만 사용자에따라 아래와 같이 입력 할 수도 있습니다.
alpha, bravo, charlie, delta
사람이 보기엔 사용자가 같은 것을 입력했다고 생각해야겠지만, 컴퓨터에겐 bravo
와 ' bravo'
는 완전히 다른 내용입니다. 무식한 컴퓨터를 계몽해줘야겠네요. 이때 배열의 각 원소에 array_map
을 이용해 trim
함수를 적용시켜 주는 것입니다.
$str = 'alpha, bravo, charlie, delta';
$final = array_map( 'trim', explode( ',', $str ) );
먼저 explode
를 이용해 문자열에서 쉼표로 분리된 각 단어들을 배열로 만들어주고 그 각 원소마다 trim
함수를 적용시키는 것입니다. 참 쉽죠?
예제2: array_map 에 사용자 정의 함수 사용하기
array_map
의 callback
함수로 PHP 내장 함수 뿐만 아니라 사용자가 직접 만든 함수도 사용할 수 있습니다.
$arr1 = array( 'Alpha', 'Bravo' , 'Charlie', 'Delta' );
$arr2 = array( 'A', 'B' , 'C', 'D );
function AisB($a, $b) {
return $a . ' is ' . $b;
}
$final = array_map( 'AisB', $arr1, $arr2 );
$a
와 $b
를 파라미터로 받아 $a is $b
라는 결과값을 반환하는 AisB
라는 함수를 만들어 $arr1
과 $arr2
의 각 원소를 매칭해 배열로 반환하는 과정입니다. $final
의 결과값인 배열은 아래와 같습니다.
$final = array(
'Alpha is A',
'Bravo is B',
'Charlie is C',
'Delta is D'
);
배열의 각 원소에 특정 함수를 적용하는 array_map
함수는 굉장히 많은 일을 할 수 있으니 적극 활용하도록 합시다.
댓글 남기기