array_merge()
함수
array_merge()
함수는
하나 이상의 배열을 병합(merge, 합치다)하여 새로운 배열을 반환하는 함수입니다.
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
// 두 개의 배열 병합
$twoMergedArray = array_merge($array1, $array2);
print_r($twoMergedArray);
/*
출력:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
*/
$array3 = [6, 7, 8];
// 세 개의 배열 병합
$threeMergedArray = array_merge($array1, $array2, $array3);
print_r($threeMergedArray);
/*
출력:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6 // 중복되는 요소는 덮어 씀
[6] => 7
[7] => 8
)
*/
array_merge()
함수는 하나 이상의 배열을 병합하여 이전 배열의 끝에 값들을 추가합니다.- 이 함수의 반환 값은 병합된 배열입니다.
- 병합하는 배열들이 동일한 문자열 키를 가지고 있다면, 나중에 나온 배열의 값이 이전 배열의 값을 덮어씁니다.
- 하지만, 병합하는 배열들이 숫자 키(인덱스)를 가지고 있다면, 나중에 나온 값은 원래 값을 덮어쓰지 않고 추가됩니다. 숫자 키의 경우, 덮어쓰지 않고 새로운 키와 함께 값을 추가합니다.
- 병합하는 배열의 숫자 키를 가진 값들은 결과 배열에서 0부터 시작하는 연속된 키로 재정렬됩니다.
array_merge()
함수의 형식은 다음과 같습니다.
구문
array_merge(array array1, array2, array3, ...): array
매개변수
array1
, array2
, array3
, ...
: 병합하고자 하는 하나 이상의 배열입니다. 이 함수는 하나 이상의 배열을 인수로 받을 수 있으며, 이러한 배열들을 순서대로 병합하여 새로운 배열을 생성합니다.
반환 값
병합된 배열이거나, 아무 인수도 없이 호출한 경우 빈 배열이 됩니다.
$emptyArray = array_merge();
print_r($emptyArray); // 출력: Array ( )
중복 항목 처리
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
)
*/
위의 예제는 다음과 같은 점을 주의하여 작성되었습니다.
- 첫 번째 배열과 두 번째 배열의 키가 중복되지 않도록 주의했습니다.
- 첫 번째 배열의 주소 정보는 두 번째 배열의 주소 정보로 대체되지 않도록 했습니다.
- 두 번째 배열의 전화번호와 이메일 정보는 첫 번째 배열에 추가되었습니다.
이 예제를 응용하여 다양한 상황에서 다차원 연관배열을 병합할 수 있습니다.