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

PHP 배열 연산자 완벽 정리: 합집합부터 배열 비교까지

PHP 배열 연산자란?

PHP는 배열(array) 데이터 타입에 사용할 수 있는 전용 연산자들을 제공합니다. 이 연산자들을 활용하면 두 배열을 합치거나, 서로 같은지 비교하는 작업을 간결한 코드로 처리할 수 있습니다.

PHP에서 정의하고 있는 배열 연산자는 다음과 같습니다.

기호예시이름결과
+$a + $b합집합(Union)$a와 $b의 합집합을 반환합니다.
==$a == $b동등(Equality)$a와 $b가 같은 키/값 쌍을 가지면 TRUE입니다.
===$a === $b일치(Identity)$a와 $b가 같은 키/값 쌍을 같은 순서같은 타입으로 가지면 TRUE입니다.
!=$a != $b부등(Inequality)$a가 $b와 같지 않으면 TRUE입니다.
<>$a <> $b부등(Inequality)$a가 $b와 같지 않으면 TRUE입니다. (!=와 동일하게 동작합니다.)
!==$a !== $b불일치(Non-identity)$a가 $b와 일치하지 않으면 TRUE입니다.

배열의 합집합 (+ 연산자)

합집합 연산자(+)는 오른쪽 배열의 요소를 왼쪽 배열에 덧붙입니다. 이때 주의할 점은, 동일한 키가 양쪽 배열 모두에 존재하면 왼쪽 배열의 값이 우선되고 오른쪽 배열의 해당 요소는 무시된다는 것입니다.

다음 예제를 통해 확인해 보겠습니다.

예제 코드

<?php
$arr1 = array("phy" => 70, "che" => 80, "math" => 90);
$arr2 = array("Eng" => 70, "Bio" => 80, "CompSci" => 90);
$arr3 = $arr1 + $arr2;
var_dump($arr3);
?>

실행 결과

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

array(6) {
["phy"]=>
int(70)
["che"]=>
int(80)
["math"]=>
int(90)
["Eng"]=>
int(70)
["Bio"]=>
int(80)
["CompSci"]=>
int(90)
}

두 배열의 키가 서로 겹치지 않았기 때문에 모든 요소가 합쳐져 총 6개의 요소를 가진 배열이 생성되었습니다.

배열의 동등 비교 (== 연산자)

== 연산자는 두 배열이 동일한 키-값 쌍을 가지고 있는지만 확인합니다. 즉, 요소의 순서나 키를 선언한 방식은 고려하지 않습니다.

다음 예제에서 $arr1은 키를 명시적으로 지정한 배열이고, $arr2는 자동으로 인덱스가 할당된 배열입니다. 하지만 두 배열의 실제 키-값 쌍은 서로 같으므로 동등하다고 판단됩니다.

예제 코드

<?php
$arr1 = array(0 => 70, 2 => 80, 1 => 90);
$arr2 = array(70, 90, 80);

var_dump($arr1 == $arr2);
var_dump($arr2 != $arr1);
?>

실행 결과

bool(true)
bool(false)

$arr1의 키-값 쌍은 0=>70, 1=>90, 2=>80이며, $arr2도 자동 인덱싱으로 인해 결국 같은 키-값 쌍을 갖게 됩니다. 따라서 == 비교 결과는 true, != 비교 결과는 false가 됩니다.

배열의 일치 비교 (=== 연산자)

=== 연산자는 더 엄격한 기준을 적용합니다. 두 배열이 일치하려면 키-값 쌍이 같을 뿐만 아니라, 그 순서까지 동일해야 합니다.

예제 코드

<?php
$arr1 = array(0 => 70, 1 => 80, 2 => 90);
$arr2 = array(70, 90, 80);

var_dump($arr1 === $arr2);

$arr3 = [70, 80, 90];
var_dump($arr3 === $arr1);
?>

실행 결과

bool(false)
bool(true)

$arr2는 값의 순서가 70, 90, 80이므로 $arr1(70, 80, 90)과 키-값 쌍의 순서가 달라 false가 반환됩니다. 반면 $arr3은 $arr1과 키-값 쌍 및 순서가 완전히 같으므로 true가 반환됩니다.

정리

  • +: 두 배열을 합치되, 중복된 키는 왼쪽 배열의 값이 우선됩니다.
  • ==: 키-값 쌍만 같으면 동등한 것으로 판단합니다.
  • ===: 키-값 쌍과 순서, 타입까지 모두 같아야 일치하는 것으로 판단합니다.
  • !=, <>, !==는 각각 위 연산자들의 반대 결과를 반환합니다.

배열 비교 시 의도하지 않은 결과를 피하려면, 단순히 값의 존재 여부만 확인할 것인지 아니면 순서까지 엄격하게 검증할 것인지에 따라 적절한 연산자를 선택하는 것이 중요합니다.