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

PHP에서 array_merge()와 '+' 연산자의 배열 병합 차이점 완벽 정리

PHP에서 여러 배열을 하나로 합치는 대표적인 방법은 array_merge() 함수와 '+'(더하기) 연산자입니다. 두 방식 모두 배열의 합집합을 구한다는 점에서 비슷해 보이지만, 내부적으로 동작하는 방식은 완전히 다릅니다. 이 글에서는 두 방식의 차이점을 예제 코드와 함께 살펴보겠습니다.

핵심 차이점 요약

  • '+' 연산자: 왼쪽(앞쪽) 배열의 값을 우선합니다. 동일한 키가 양쪽 배열에 모두 존재하면 왼쪽 배열의 값이 유지되고, 오른쪽 배열의 중복 키는 무시됩니다.
  • array_merge(): 동일한 문자열(non-numeric) 키가 존재할 경우 나중에 전달된 배열의 값으로 덮어씁니다. 반면 숫자 키는 덮어쓰지 않고 배열 끝에 새로운 요소로 추가됩니다.

예제 1: '+' 연산자로 배열 합치기

먼저 '+' 연산자를 사용하여 두 개의 배열을 병합하는 예제입니다.

<?php
   $arr1 = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110");
   $arr2 = array("t"=>"115", "u"=>"103", "v"=>"105", "w"=>"125");
   var_dump($arr1 + $arr2);
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

array(8) {
   ["p"],>
   string(3) "150"
   ["q"],>
   string(3) "100"
   ["r"],>
   string(3) "120"
   ["s"],>
   string(3) "110"
   ["t"],>
   string(3) "115"
   ["u"],>
   string(3) "103"
   ["v"],>
   string(3) "105"
   ["w"],>
   string(3) "125"
}

두 배열 사이에 중복된 키가 없으므로 모든 요소가 그대로 합쳐진 것을 확인할 수 있습니다.

예제 2: array_merge()로 배열 합치기

이번에는 같은 작업을 array_merge() 함수로 수행해 보겠습니다.

<?php
   $arr1 = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110");
   $arr2 = array("t"=>"115", "u"=>"110", "v"=>"105", "w"=>"100");
   var_dump(array_merge($arr1, $arr2));
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

array(8) {
   ["p"],>
   string(3) "150"
   ["q"],>
   string(3) "100"
   ["r"],>
   string(3) "120"
   ["s"],>
   string(3) "110"
   ["t"],>
   string(3) "115"
   ["u"],>
   string(3) "110"
   ["v"],>
   string(3) "105"
   ["w"],>
   string(3) "100"
}

정리 및 활용 가이드

만약 두 배열에 동일한 문자열 키가 존재한다면 결과는 크게 달라집니다. array_merge()는 나중에 전달된 배열의 값으로 기존 값을 덮어쓰는 반면, '+' 연산자는 앞쪽 배열의 값을 그대로 유지합니다. 따라서 다음과 같은 기준으로 선택하는 것이 좋습니다.

  • 중복 키의 값을 새 값으로 갱신하고 싶다면 → array_merge()
  • 기존(왼쪽) 배열의 값을 보존하고 싶다면 → '+' 연산자

숫자 인덱스 배열을 단순히 이어 붙일 때도 array_merge()는 인덱스를 재배열하며 추가하는 반면, '+' 연산자는 왼쪽 배열의 인덱스를 우선하므로 상황에 맞게 적절한 방식을 선택하시기 바랍니다.