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

PHP 배열 비교 완벽 가이드: 동등성 검사 방법 총정리

PHP에서 배열을 다루다 보면 두 배열이 같은 요소를 포함하고 있는지 확인하기 위해 비교해야 하는 경우가 자주 발생합니다. 배열의 동등성은 여러 가지 의미로 해석될 수 있습니다. 같은 순서로 같은 요소를 갖는 경우, 순서와 관계없이 같은 요소를 갖는 경우, 나아가 데이터 타입까지 엄격하게 일치해야 하는 경우가 그 예입니다. 이 글에서는 PHP에서 두 배열이 같은지 확인하는 다양한 방법을 코드 예제와 함께 살펴보겠습니다.

== 연산자 사용하기

== 연산자는 느슨한(loose) 비교를 수행합니다. 엄격한 타입 검사 없이 두 배열이 같은 순서로 같은 요소를 갖고 있는지만 확인합니다.

<?php
$arr1 = [1, 2, 3, 4];
$arr2 = [1, 2, 3, 4];
if ($arr1 == $arr2) {
 echo "두 배열은 같습니다";
} else {
 echo "두 배열은 같지 않습니다";
}
?>
두 배열은 같습니다

=== 연산자 사용하기

=== 연산자는 엄격한(strict) 비교를 수행하며, 값뿐만 아니라 데이터 타입까지 모두 검사합니다. 따라서 값이 같아도 타입이 다르면 같지 않다고 판단합니다.

<?php
$array1 = [1, 2, 3, 4];
$array2 = [1, 2, '3', 4]; 
if ($array1 === $array2) {
 echo "두 배열은 같습니다!";
} else {
 echo "두 배열은 같지 않습니다!";
}
?>
두 배열은 같지 않습니다!

위 예제에서 $array2의 세 번째 요소는 문자열 '3'이므로, 정수 3과 비교했을 때 타입이 달라 두 배열은 같지 않은 것으로 판별됩니다.

array_diff() 함수 사용하기

array_diff() 함수는 배열들을 비교하여 차이가 있는 요소를 반환합니다. 순서와 무관하게 배열을 비교하려면 양방향 모두에서 차이가 존재하는지 확인해야 합니다.

<?php
$array1 = [1, 2, 3];
$array2 = [3, 2, 1];
if (empty(array_diff($array1, $array2)) && empty(array_diff($array2, $array1))) {
 echo "배열이 같습니다";
} else {
 echo "배열이 같지 않습니다";
}
?>
배열이 같습니다

순서 무관 비교를 위한 정렬 방식

요소의 순서가 중요하지 않다면, 두 배열을 먼저 오름차순으로 정렬한 뒤 == 연산자로 비교하는 간단한 방법도 효과적입니다.

<?php
$array1 = [3, 2, 1];
$array2 = [1, 2, 3];
// 두 배열 정렬
sort($array1);
sort($array2);
// 정렬된 배열 비교
if ($array1 == $array2) {
 echo "두 배열은 같습니다";
} else {
 echo "두 배열은 같지 않습니다";
}
?>
두 배열은 같습니다

비교 방법 한눈에 보기

방법 타입 검사 순서 민감 여부 적합한 용도
== 느슨함 같은 순서, 혼합 타입 허용
=== 엄격함 값과 타입이 모두 일치해야 하는 경우
array_diff() 느슨함 아니오 순서와 무관한 비교
정렬 + == 느슨함 아니오 순서 무관, 단순 구조의 배열

결론

값과 타입까지 엄격하게 검사하려면 ===를, 순서를 고려한 느슨한 비교에는 ==를, 순서와 무관한 비교에는 array_diff() 또는 정렬 후 비교 방식을 사용하는 것이 좋습니다. 각 방법은 서로 다른 비교 요구 사항에 맞게 설계되어 있으므로, 프로젝트의 상황과 목적에 가장 적합한 방법을 선택하시기 바랍니다.