PHP의 array_map() 함수는 배열의 각 요소를 사용자가 직접 정의한 콜백 함수에 하나씩 전달하고, 그 실행 결과를 모아 새로운 배열로 반환하는 함수입니다. 배열의 모든 값을 일괄적으로 변환하거나 가공해야 할 때 반복문 없이 간결하게 처리할 수 있어 매우 유용합니다.
문법
array_map(callback, arr1, arr2, arr3, arr4, ...)
매개변수
callback — 각 배열 요소에 적용할 콜백 함수 이름
arr1 — 변환할 대상이 되는 배열
arr2 — 함께 처리할 추가 배열 (선택 사항)
arr3 — 함께 처리할 추가 배열 (선택 사항)
반환값
array_map() 함수는 첫 번째 배열의 각 값에 사용자가 정의한 함수를 순서대로 적용한 결과를 담은 새로운 배열을 반환합니다. 원본 배열은 변경되지 않습니다.
예제 1: 배열의 각 요소 제곱하기
<?php
function square($n) {
return($n * $n);
}
$arr = array(1, 2, 3);
$res = array_map("square", $arr);
print_r($res);
?>
출력 결과
Array ( [0] => 1 [1] => 4 [2] => 9 )
위 예제에서는 각 숫자를 제곱하는 square() 함수를 정의한 뒤, array_map()으로 배열의 모든 요소에 적용했습니다. 그 결과 [1, 2, 3]이 [1, 4, 9]로 변환된 것을 확인할 수 있습니다.
예제 2: 여러 배열을 묶어 다차원 배열 만들기
콜백 자리에 null을 전달하면, 여러 배열에서 같은 인덱스에 위치한 요소들을 하나씩 묶어 '배열의 배열' 형태로 만들 수 있습니다.
<?php
$arr1 = array(1, 2, 3);
$arr2 = array("steve", "david", "nadal");
$arr3 = array("cricket", "football", "tennis");
$res = array_map(null, $arr1, $arr2, $arr3);
print_r($res);
?>
출력 결과
Array ( [0] => Array ( [0] => 1 [1] => steve [2] => cricket ) [1] => Array ( [0] => 2 [1] => david [2] => football ) [2] => Array ( [0] => 3 [1] => nadal [2] => tennis ) )
이처럼 array_map(null, ...) 방식은 서로 다른 여러 배열의 데이터를 행 단위로 결합할 때 특히 편리합니다. 마치 데이터베이스의 레코드처럼 구조화된 배열을 손쉽게 생성할 수 있습니다.