💻 자주 쓰는 PHP 함수

[PHP 함수] array_merge() 함수로 배열 합치기

rhandy 2025. 3. 20. 13:10
728x90

PHP에서 배열을 다룰 때 두 개 이상의 배열을 합쳐야 하는 경우가 자주 발생합니다.
예를 들면, 데이터를 동적으로 추가하거나, 여러 개의 설정 배열을 하나로 합치거나, 사용자 입력 데이터를 병합할 때 유용하게 사용됩니다.

이러한 기능을 수행하는 대표적인 함수가 바로 array_merge() 입니다.

이 글에서는 PHP array_merge() 함수의 사용법, 다양한 활용 예제, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다. 


1. array_merge() 함수란?

기본 문법

array array_merge(array ...$arrays)

매개변수 설명

매개변수 설명

$arrays 합칠 배열들 (2개 이상 가능)

반환값

  • 주어진 배열들을 하나의 배열로 병합하여 반환
  • 숫자 키는 새로 부여되고, 문자열 키는 덮어쓰기됨

2. array_merge() 기본 예제

🔹 두 개의 배열 병합

<?php
$array1 = ["Apple", "Banana"];
$array2 = ["Cherry", "Grape"];

$result = array_merge($array1, $array2);
print_r($result);
?>

🔹 실행 결과

Array
(
    [0] => Apple
    [1] => Banana
    [2] => Cherry
    [3] => Grape
)

➡ 두 배열이 하나로 합쳐졌으며, 인덱스는 0부터 새롭게 부여됨.


🔹 숫자 키가 있는 배열 병합

<?php
$array1 = [0 => "Apple", 1 => "Banana"];
$array2 = [2 => "Cherry", 3 => "Grape"];

$result = array_merge($array1, $array2);
print_r($result);
?>

🔹 실행 결과

Array
(
    [0] => Apple
    [1] => Banana
    [2] => Cherry
    [3] => Grape
)

숫자 키가 있더라도 array_merge()는 키를 새롭게 부여.


🔹 문자열 키가 있는 배열 병합

<?php
$array1 = ["name" => "John", "age" => 25];
$array2 = ["age" => 30, "city" => "New York"];

$result = array_merge($array1, $array2);
print_r($result);
?>

🔹 실행 결과

Array
(
    [name] => John
    [age] => 30
    [city] => New York
)

➡ array_merge()는 문자열 키가 중복될 경우 후속 배열 값으로 덮어쓰기합니다.


🔹 다차원 배열 병합

<?php
$array1 = ["fruits" => ["Apple", "Banana"]];
$array2 = ["fruits" => ["Cherry", "Grape"]];

$result = array_merge($array1, $array2);
print_r($result);
?>

🔹 실행 결과

Array
(
    [fruits] => Array
        (
            [0] => Cherry
            [1] => Grape
        )
)

➡ array_merge()는 다차원 배열을 병합할 때 덮어쓰기 방식으로 동작하므로, 기존 데이터가 유지되지 않습니다.


3. array_merge()의 실용적인 활용 예제

🔹 1) 설정 파일 병합

<?php
$defaultConfig = ["theme" => "light", "language" => "en"];
$userConfig = ["language" => "fr", "timezone" => "UTC"];

$config = array_merge($defaultConfig, $userConfig);
print_r($config);
?>

🔹 실행 결과

Array
(
    [theme] => light
    [language] => fr
    [timezone] => UTC
)

➡ 사용자 설정이 기본 설정을 덮어쓰는 방식으로 적용됩니다.


🔹 2) 사용자 입력 데이터와 기본 데이터 병합

<?php
$defaultData = ["name" => "Guest", "role" => "user"];
$userInput = ["name" => "Alice"];

$finalData = array_merge($defaultData, $userInput);
print_r($finalData);
?>

🔹 실행 결과

Array
(
    [name] => Alice
    [role] => user
)

➡ 기본 데이터를 유지하면서, 사용자가 입력한 데이터를 적용할 수 있습니다.


🔹 3) 여러 개의 배열 한 번에 병합

<?php
$array1 = ["Apple", "Banana"];
$array2 = ["Cherry"];
$array3 = ["Grape", "Orange"];

$result = array_merge($array1, $array2, $array3);
print_r($result);
?>

➡ array_merge()는 여러 개의 배열을 한 번에 병합할 수 있습니다.


🔹 4) 다차원 배열 유지하면서 병합 (array_merge_recursive())

<?php
$array1 = ["fruits" => ["Apple", "Banana"]];
$array2 = ["fruits" => ["Cherry", "Grape"]];

$result = array_merge_recursive($array1, $array2);
print_r($result);
?>

🔹 실행 결과

Array
(
    [fruits] => Array
        (
            [0] => Apple
            [1] => Banana
            [2] => Cherry
            [3] => Grape
        )
)

➡ array_merge_recursive()는 덮어쓰기 대신 배열을 병합하여 기존 데이터를 유지할 수 있습니다.


4. array_merge()와 다른 배열 함수 비교

함수 설명

array_merge() 배열을 병합하고, 숫자 키는 재정렬, 문자열 키는 덮어쓰기
array_merge_recursive() 다차원 배열을 병합하며, 같은 키 값이 있으면 배열로 묶음
array_replace() 덮어쓰기 방식이지만, 숫자 키도 유지됨
+ 연산자 배열을 병합하지만, 덮어쓰지 않고 기존 값을 유지

✅ + 연산자와의 차이점

<?php
$array1 = ["name" => "John", "age" => 25];
$array2 = ["age" => 30, "city" => "New York"];

$result = $array1 + $array2;
print_r($result);
?>

🔹 실행 결과

Array
(
    [name] => John
    [age] => 25
    [city] => New York
)

➡ + 연산자는 기존 키 값을 유지하고 덮어쓰지 않음.
덮어쓰려면 array_merge()를 사용해야 함.


5. array_merge() 사용 시 주의할 점

숫자 키는 덮어쓰기되지 않고 새롭게 할당됨

<?php
$array1 = [10 => "A"];
$array2 = [20 => "B"];
print_r(array_merge($array1, $array2));
?>

➡ 기존 키 값이 유지되지 않고, 0부터 다시 할당됩니다.

문자열 키는 덮어쓰기됨

<?php
$array1 = ["key" => "A"];
$array2 = ["key" => "B"];
print_r(array_merge($array1, $array2));
?>

➡ "key" => "B"가 최종 결과로 남음.

다차원 배열을 병합할 때는 array_merge_recursive() 사용 ➡ 기존 배열을 덮어쓰지 않으려면 array_merge_recursive()를 사용해야 합니다.


6. 결론

PHP의 array_merge() 함수는 배열을 병합하는 가장 강력한 함수입니다.
이를 활용하면 설정 파일 병합, 사용자 입력 데이터 적용, 다차원 배열 처리 등을 효율적으로 수행할 수 있습니다.

 

📌 핵심 요약
✔️ 숫자 키는 새롭게 할당, 문자열 키는 덮어쓰기
✔️ 여러 개의 배열을 한 번에 병합 가능
✔️ 다차원 배열은 array_merge_recursive() 사용
✔️ 기존 키 값을 유지하려면 + 연산자 사용

이제 array_merge()를 활용하여 더욱 효율적인 PHP 개발을 해보세요! 🚀

💡 도움이 되셨다면 공유해주세요! 😊

 

728x90