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_mapcallback 함수로 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 함수는 굉장히 많은 일을 할 수 있으니 적극 활용하도록 합시다.