Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP array_merge_recursive() 함수 완벽 가이드 – 배열 재귀 병합 방법

PHP의 array_merge_recursive() 함수는 하나 이상의 배열을 재귀적으로(recursively) 병합하여 하나의 배열로 만들어 주는 함수입니다.

이 함수가 array_merge() 함수와 다른 점은 키(key) 충돌이 발생했을 때 드러납니다. 두 개 이상의 배열에 동일한 키가 존재하면, array_merge_recursive()는 해당 값들을 덮어쓰지 않고 하나의 배열로 묶어 보존합니다. 반면 array_merge()는 같은 상황에서 마지막(나중에 입력된) 값으로 기존 값을 덮어써 버립니다.

문법(Syntax)

array_merge_recursive(arr1, arr2, arr3, …)

매개변수(Parameters)

  • arr1 − 병합의 기준이 되는 초기 배열

  • arr2 − 병합할 또 다른 배열

  • arr3 − 병합할 추가적인 배열 (필요한 만큼 여러 개 전달 가능)

반환값(Return)

array_merge_recursive() 함수는 매개변수로 전달된 모든 배열의 요소들이 병합된 하나의 배열을 반환합니다. 동일한 키를 가진 값들은 개별 요소가 아니라 중첩된 배열 형태로 함께 저장됩니다.

다음 예제는 두 번째 배열에서 첫 번째 배열과 키가 겹치는 경우를 보여줍니다. 이때 array_merge_recursive()는 해당 값을 하나의 배열로 만들어 처리합니다.

예제(Example)

<?php
   $arr1 = array("p"=>"one","q"=>"two");
   $arr2 = array("q"=>"three","r"=>"four");
   print_r(array_merge_recursive($arr1,$arr2));
?>

출력 결과(Output)

Array
(
   [p] => one
   [q] => Array
      (
         [0] => two
         [1] => three
      )

   [r] => four
)

정리

위 실행 결과를 보면, 두 배열 모두에 존재하는 키 'q'의 값들이 'two'와 'three'로 사라지지 않고 하나의 배열 안에 순서대로 저장된 것을 확인할 수 있습니다. 반복되는 키의 데이터를 모두 유지해야 하는 경우에는 array_merge() 대신 array_merge_recursive()를 사용하는 것이 적합합니다.