연산자 |
의미 |
예시 |
설명 |
---|---|---|---|
== |
값이 같음 |
$a == $b |
타입 무시하고 값만 비교 |
=== |
값과 타입이 같음 |
$a === $b |
타입까지 동일해야 참 |
!= |
값이 다름 |
$a != $b |
타입 무시하고 값이 다르면 참 |
<> |
!=와 동일 |
$a <> $b |
값이 다르면 참 |
!== |
값 또는 타입이 다름 |
$a !== $b |
하나라도 다르면 참 |
> |
왼쪽이 더 큼 |
$a > $b |
|
< |
오른쪽이 더 큼 |
$a < $b |
|
>= |
왼쪽이 크거나 같음 |
$a >= $b |
|
<= |
오른쪽이 크거나 같음 |
$a <= $b |
|
<=> |
스페이스쉽 연산자 |
$a <=> $b |
왼쪽이 작으면 -1, 같으면 0, 크면 1 반환 |
타입이 다르더라도 값이 같으면 참으로 판단
var_dump(5 == '5'); // true
var_dump(0 == false); // true
var_dump('' == 0); // true
PHP는 자동으로 타입을 변환하여 비교합니다. 실수로 참/거짓 판별이 왜곡될 수 있으므로 주의가 필요합니다.
타입과 값이 모두 같아야 참
var_dump(5 === '5'); // false (정수 vs 문자열)
var_dump(0 === false); // false (정수 vs 불리언)
var_dump(5 === 5); // true
엄격한 비교는 예상치 못한 형변환 오류를 방지하므로 권장되는 방식입니다.
var_dump(5 != '5'); // false
var_dump(5 !== '5'); // true
!=과 <>는 같음
!==는 타입까지 확인하여 조금 더 안전한 비교
var_dump(10 > 5); // true
var_dump(3 <= 3); // true
정수, 실수 간 비교 가능
문자열도 비교 가능하지만 사전식 비교가 이루어짐
var_dump("apple" < "banana"); // true
echo 5 <=> 10; // -1
echo 10 <=> 10; // 0
echo 15 <=> 10; // 1
정렬 함수 또는 비교 정렬 알고리즘 구현에 유용
왼쪽이 작으면 -1, 같으면 0, 크면 1 반환
PHP는 문자열도 비교 가능합니다. 기본적으로 사전순 비교입니다.
var_dump("abc" < "bcd"); // true
var_dump("10" < "2"); // true (문자열로 비교되면 문자 기준)
문자열을 숫자로 변환하지 않고 비교하고 싶다면 **strict 연산자(===)**를 사용하거나 strcmp() 함수를 활용하세요.
var_dump('abc' == 0); // true (문자열이 숫자 변환 실패 → 0 처리)
var_dump('0abc' == 0); // true
PHP는 비교 시 문자열을 숫자로 변환하려고 시도합니다. 예상치 못한 결과가 발생할 수 있으므로 주의해야 합니다.
문자열 비교에 안전하게 사용할 수 있는 함수입니다.
strcmp("abc", "abc"); // 0 (같음)
strcmp("abc", "abd"); // -1
strcmp("abc", "abb"); // 1
대소문자를 구분하는 비교이며, strcasecmp()는 대소문자 구분을 하지 않습니다.
비교 연산은 자주 삼항 연산자와 함께 사용됩니다.
$result = ($age >= 18) ? '성인' : '미성년자';
연산자 |
설명 |
자동 형변환 |
권장 여부 |
---|---|---|---|
== |
느슨한 비교 |
있음 |
지양 (예외적으로 사용 가능) |
=== |
엄격한 비교 |
없음 |
권장 |
!=, <> |
값 다름 비교 |
있음 |
조건에 따라 사용 |
!== |
값 또는 타입 다름 비교 |
없음 |
권장 |
<, >, <=, >= |
크기 비교 |
있음 |
데이터 타입 인지 후 사용 |
<=> |
비교 정렬 전용 |
있음 |
정렬에 적합 |
strcmp() |
문자열 비교 함수 |
없음 |
안전하고 명확함 |
PHP에서 비교 연산은 단순한 값의 비교를 넘어서, 형변환과 타입에 대한 이해가 동반되어야 정확한 코드 작성이 가능합니다. 특히, == 사용 시 자동 형변환으로 인한 예외 상황을 반드시 고려해야 하며, 안전한 비교를 위해 ===를 기본으로 사용하는 것이 좋습니다.