본문 바로가기
PHP

[PHP] array_merge_recursive() 다차원 배열 병합

by teamnova 2025. 7. 6.
728x90

안녕하세요, 

 

오늘은 다차원 배열이 섞여있는 상황에서 여러 배열을 하나로 합칠 수 있는 array_merge_recursive() 함수에 대해 알아보겠습니다. 

 

array_merge_recursive() 

array_merge_recursive() 함수는 여러 배열을 재귀적으로 병합합니다. 

즉, 같은 키가 겹치면 단순 덮어쓰기 하는 것이 아니라, 각각의 값을 배열로 묶어 합칩니다. 

array_merge_recursive(array ...$arrays): array

 

 

array_merge()와의 차이점

$array1 = ['color' => 'red'];
$array2 = ['color' => 'blue'];

print_r(array_merge($array1, $array2));
print("<br>");
print_r(array_merge_recursive($array1, $array2));

 

결과

Array ( [color] => blue )
Array ( [color] => Array ( [0] => red [1] => blue ) )

array_merge()는 마지막 값을 덮어쓰기 하고,
array_merge_recursive()는 중복 키를 가진 값들을 모아서 배열로 합칩니다.

 

 

예제

<?php
$baseStats = [
    'hp' => 100,
    'attack' => 20,
    'skills' => ['slash', 'block']
];

$itemBonus = [
    'attack' => 5,
    'skills' => ['fireball']
];

$mergedStats = array_merge_recursive($baseStats, $itemBonus);

print_r($mergedStats);
?>

 

결과

Array ( [hp] => 100 [attack] => Array ( [0] => 20 [1] => 5 ) [skills] => Array ( [0] => slash [1] => block [2] => fireball ) )