정의 및 사용 방법
- PHP 버전
- 4+
array_merge() 함수는
하나 이상의 배열을 순서대로 병합하여 새로운 배열을 만듭니다.
이 함수는 여러 배열을 하나로 합쳐야 할 때 유용하게 사용할 수 있습니다.
특징
- 여러 개의 배열을 원하는 순서대로 합칠 수 있습니다.
- 기존 배열을 변경하지 않고, 합쳐진 결과를 담은 새로운 배열을 반환합니다.
- 각 배열의 요소는 순서대로 이어 붙여집니다.
기본 예제
/* 인덱스 배열 병합 */
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
// 두 개의 배열 병합
$result = array_merge($array1, $array2);
print_r($result);
/*
출력:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
*/
/* 연관 배열 병합 */
$assoc_array1 = ['a' => 'red', 'b' => 'green'];
$assoc_array2 = ['c' => 'blue', 'd' => 'yellow'];
// 두 개의 배열 병합
$assoc_result = array_merge($assoc_array1, $assoc_array2);
print_r($assoc_result);
/*
출력:
Array
(
[a] => red
[b] => green
[c] => blue
[d] => yellow
)
*/
구문
array_merge(array array1, array2, array3, ...): array
매개변수
array1, array2, array3, ...: 병합하고자 하는 하나 이상의 배열입니다. 이 함수는 하나 이상의 배열을 인수로 받을 수 있으며, 이러한 배열들을 순서대로 병합하여 새로운 배열을 생성합니다.
반환 값
병합된 배열이거나, 아무런 매개변수도 전달하지 않으면 빈 배열을 반환합니다.
- 병합하는 배열이 연관 배열(문자열 키를 가진 배열)인 경우, 동일한 문자열 키가 있으면 나중에 나온 배열의 값이 이전 배열의 값을 덮어씁니다.
- 병합하는 배열이 숫자 키(인덱스 배열)를 가진 경우, 값들은 덮어쓰이지 않고 결과 배열의 끝에 추가됩니다.
- 결과 배열의 숫자 키는 0부터 시작하는 연속된 정수 키로 재정렬됩니다.
변경 이력
$result = array_merge();
var_dump($result); // 출력: Warning: array_merge() expects at least 1 parameter...
$result = array_merge(null);
var_dump($result); // 출력: Warning: array_merge() expects at least 1 parameter...
$result = array_merge();
var_dump($result); // 출력: array(0) { }
$result = array_merge(null);
var_dump($result); // 출력: Fatal error: Uncaught TypeError:
중복 요소 처리
array_merge() 함수를 올바르게 사용하기 위해서는 array_merge() 함수가 중복 요소를 어떻게 처리하는지 이해해야 합니다. 중복된 키 또는 인덱스가 있는 경우 어떻게 작동하는지 예제를 통해 살펴보겠습니다.
- 문자열 키의 중복 처리
- 숫자 키(인덱스)의 중복 처리
- 문자열 키와 숫자 키의 중복 처리
문자열 키의 중복 처리
병합하는 배열들이 동일한 문자열 키를 가지고 있다면, 나중에 나온 배열의 값이 이전 배열의 값을 덮어씁니다. 즉, 나중에 나온 값으로 대체됩니다.
$array1 = ['a' => 'apple', 'b' => 'banana'];
$array2 = ['b' => 'blueberry', 'c' => 'cherry'];
$result = array_merge($array1, $array2);
print_r($result);
/*
출력:
Array
(
[a] => apple
[b] => blueberry
[c] => cherry
)
*/
$array1과$array2의 중복된 문자열 키'b'가 있습니다.array_merge()함수는 중복 키'b'에 대해서는 뒤에 나온 배열인$array2의 값('blueberry')으로 덮어씁니다.
숫자 키(인덱스)의 중복 처리
병합하는 배열들이 숫자 키(인덱스)를 가지고 있다면, 나중에 나온 값은 원래 값을 덮어쓰지 않고 추가됩니다. 숫자 키의 경우, 덮어쓰지 않고 새로운 키와 함께 값을 추가합니다.
$array1 = [0 => 'apple', 1 => 'banana'];
$array2 = [1 => 'blueberry', 2 => 'cherry'];
$result = array_merge($array1, $array2);
print_r($result);
/*
출력:
Array
(
[0] => apple
[1] => banana
[2] => blueberry
[3] => cherry
)
*/
$array1과$array2의 중복된 숫자 키'1'이 있습니다.array_merge()함수는 중복 키'1'에 대해서는 뒤에 나온 배열인$array2의 값('blueberry')을 덮어쓰지 않고, 숫자 키를 증가시켜 새로운 키'3'으로 값을 추가합니다.
문자열 키와 숫자 키의 중복 처리
$array1 = ['apple', 'banana', 'color' => 'red'];
$array2 = ['green', 'orange', 'color' => 'orange', 'shape' => 'circle'];
$result = array_merge($array1, $array2);
print_r($result);
/*
출력:
Array
(
[0] => apple
[1] => banana
[color] => orange
[2] => green
[3] => orange
[shape] => circle
)
*/
- 문자열 키
'color'의 경우,$array2의 값'orange'로 덮어쓰여집니다. - 숫자 키(인덱스) 2와 3의 경우,
$array2의 값'green'과'orange'가 추가됩니다.
숫자 키와 문자열 키의 중복 처리는 array_merge() 함수를 이해하는 데 중요한 요소 중 하나입니다. 이를 이해하면 병합된 배열의 결과가 예상한 대로 나오는지를 파악하고, 데이터 구조를 올바르게 유지하는 데 도움이 됩니다.
다차원 연관 배열 합치기
아래의 예제에서는 array_merge() 함수를 이용한 다차원 연관 배열 합치기 예제입니다.
// 첫 번째 배열
$array1 = [
'name' => 'John Doe',
'age' => 30,
'address' => [
'street' => '123 Main Street',
'city' => 'Anytown',
'state' => 'CA'
]
];
// 두 번째 배열
$array2 = [
'phone' => '123-456-7890',
'email' => 'johndoe@example.com'
];
// 두 배열을 병합
$result = array_merge($array1, $array2);
// 결과 출력
print_r($result);
/*
출력:
Array
(
[name] => John Doe
[age] => 30
[address] => Array
(
[street] => 123 Main Street
[city] => Anytown
[state] => CA
)
[phone] => 123-456-7890
[email] => johndoe@example.com
)
*/
위의 예제는 다음과 같은 점을 주의하여 작성되었습니다.
- 첫 번째 배열과 두 번째 배열의 키가 중복되지 않도록 주의했습니다.
- 첫 번째 배열의 주소 정보는 두 번째 배열의 주소 정보로 대체되지 않도록 했습니다.
- 두 번째 배열의 전화번호와 이메일 정보는 첫 번째 배열에 추가되었습니다.
이 예제를 응용하여 다양한 상황에서 다차원 연관배열을 병합할 수 있습니다.