array_map()
함수
array_map()
함수는 각 요소에 지정된 콜백 함수를 적용하여 새로운 배열을 생성하기 위한 함수입니다.
array_map()
함수에 전달되는 콜백 함수는 "각 요소를 변환하여 새로운 배열로 매핑(mapping)하는 역할을 한다"라고 말합니다. 이렇게 매핑된 결과를 새로운 배열로 반환하기 때문에 이 함수의 이름이 "map"으로 정해졌습니다.
매핑(mapping)이란
어떤 값을 다른 값에 대응시키는 과정을 뜻하는 개념이며 수학, 컴퓨터 과학, 지리 정보 시스템 등 다양한 분야해서 사용합니다.
array_map()
함수는 foreach()
반복문과 함께 PHP에서 배열을 순회하는 방법 중 가장 널리 사용되는 방법입니다.
간단한 예제
array_map()
함수는
배열을 순회하며 지정된 콜백 함수를 적용하여 각 요소를 변환하고, 그 변환된 값을 모아서 새로운 배열로 반환하는 역할을 수행합니다. 이 함수는 주어진 배열의 모든 요소에 동일한 작업을 적용한 요소들로 구성된 새로운 배열을 생성할 때 주로 사용합니다.
간단한 예제를 통해 설명해보겠습니다.
다음은 숫자 배열을 받아 각 숫자를 두 배로 만들어 새로운 배열을 생성하는 array_map()
함수의 사용 예입니다.
이 예제에서는 $numbers
배열의 각 요소를 두 배로 만들기 위한 double()
라는 콜백 함수를 정의하고, array_map()
함수를 사용하여 이 함수를 $numbers
배열의 각 요소에 적용하여 $doubledNumbers
배열을 생성합니다. 결과적으로 $doubledNumbers
배열에는 각 요소가 두 배로 된 값이 포함되어 있습니다.
사용 방법
array_map()
함수의 형식은 다음과 같습니다.
구문
매개변수
$callback |
각 배열 요소에 적용할 함수 또는 메서드. 이 함수는 배열의 각 요소에 적용되며 요소를 변환하거나 가공하는 역할을 합니다. 콜백 함수는 배열의 요소 하나를 인수로 받고, 변환된 결과를 반환해야 합니다. |
---|---|
$array_1 |
$callback 에 적용할 첫 번째 배열입니다. |
$... |
$callback 에 적용할 ... 번째 배열입니다. 배열의 개수에 따라 추가적인 배열을 지정할 수 있습니다. |
반환 값
콜백 함수를 주어진 배열 (또는 여러 배열)의 각 값에 적용하고, 결과를 포함하는 새로운 배열을 반환합니다. 이 새로운 배열은 콜백 함수가 적용된 배열의 키를 보존합니다. 그러나 주의할 점도 있습니다.
- 하나의 배열만 콜백 함수에 전달한 경우: 반환된 배열은 원래 배열과 동일한 키를 가집니다.
- 여러 배열을 콜백 함수에 전달한 경우: 반환된 배열은 연속적인 정수 키를 가집니다.
- 콜백 함수에 전달한 배열이 참조 변수일 경우: PHP 8.0.0 버전부터는 E_WARNING 경고를 발생합니다.
하나의 배열만 콜백 함수에 전달한 경우
위 예제에서는 $numbers
배열에만 콜백 함수 double
을 적용합니다. array_map()
함수가 한 배열에만 적용되었으므로 반환된 배열은 원래 배열과 동일한 키를 가집니다. 출력은 각 요소가 두 배로 된 값과 함께 원래 키를 가지게 됩니다.
여러 배열을 콜백 함수에 전달한 경우
위 예제에서는 $array1
과 $array2
두 개의 배열을 addArrays
라는 콜백 함수에 전달하고, 이 함수는 두 배열의 값을 더하여 반환합니다. 그러나 $result
배열의 키는 연속적인 정수로 구성됩니다.
위 예제에서는 $array1
과 $array2
두 개의 배열을 addArrays
콜백 함수에 전달합니다. $array1
은 3개의 요소를 가지고 있고, $array2
는 2개의 요소를 가지고 있습니다. array_map()
함수는 가장 긴 배열의 길이를 기준으로 콜백 함수를 적용하며, 반환된 배열의 길이도 가장 긴 배열의 길이와 같게 됩니다.
즉, 여러 배열을 array_map()
함수에 전달하고 배열의 길이가 다를 경우, 반환된 배열의 길이는 가장 긴 입력 배열의 길이와 동일하며, 연속적인 정수 키가 할당됩니다. 이렇게 더 긴 배열에 존재하지 않는 요소는 null
로 채워집니다.
콜백 함수에 전달한 배열이 참조 변수일 경우
다양한 활용 사례
array_map()
함수를 사용하여 배열의 각 요소를 매핑하여 새로운 배열을 반환하는 세 가지 유용한 사례를 소개해드리겠습니다
소문자 변환
문자열 배열에서 각 문자열을 소문자로 변환하여 새로운 배열을 생성하는 경우 array_map()
함수를 사용할 수 있습니다.
위 코드에서 toLowerCase
라는 콜백 함수를 정의하고, 이 함수를 array_map()
함수에 적용하여 $words
배열의 각 문자열 요소를 소문자로 변환합니다. 결과적으로 배열에는 모든 문자열 요소가 소문자로 변환(strtolower()
함수를 사용)된 값이 됩니다.
다중 배열 조작
여러 배열을 동시에 조작하고 결합하는 경우. 예를 들어, 여러 배열의 값들을 합치거나, 연결하여 새로운 데이터 구조를 만들 때 사용할 수 있습니다.
객체 배열 변환
객체 배열에서 특정 속성을 추출하거나 객체의 메서드를 호출하여 배열을 변환하는 경우. 예를 들어, 사용자 객체 배열에서 이름만 추출하거나, 각 사용자의 특정 메서드를 호출하여 새로운 데이터를 생성할 때 사용할 수 있습니다.
array_map()
함수는 배열 조작과 변환을 위한 강력한 도구로 사용될 수 있으며, 다양한 상황에서 유용하게 적용할 수 있습니다.
참고문헌
같이 보기
- PHP foreach() 반복문 사용법 및 활용 예제
- PHP array_filter() 함수 – 개념 정리 및 사용 예제
- PHP array_reduce() 함수 – 개념 정리 및 사용 예제
- PHP array_search() 함수 – 개념 정리 및 사용 예제
- PHP array_keys() 함수 – 배열 키 목록 가져오기
- PHP array_values() 함수 – 배열 값 목록 가져오기
- PHP array_slice() 함수 - 개념 정리 및 사용 예제
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_diff_assoc() 함수 - 키를 기준으로 다른 배열에 없는 값 찾기
- PHP array_intersect() 함수 - 다른 배열과의 공통 값 찾기
- PHP array_intersect_assoc() 함수 - 키와 값을 기준으로 다른 배열과의 공통 요소 찾기
- PHP array_reverse() 함수 - 배열 요소 역순 정렬
- 자바스크립트 map() 함수 – 개념 정리 및 사용 예제