정의 및 사용 방법
- 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
)
*/
위의 예제는 다음과 같은 점을 주의하여 작성되었습니다.
- 첫 번째 배열과 두 번째 배열의 키가 중복되지 않도록 주의했습니다.
- 첫 번째 배열의 주소 정보는 두 번째 배열의 주소 정보로 대체되지 않도록 했습니다.
- 두 번째 배열의 전화번호와 이메일 정보는 첫 번째 배열에 추가되었습니다.
이 예제를 응용하여 다양한 상황에서 다차원 연관배열을 병합할 수 있습니다.