PHP에서 값과 타입의 동등성
따옴표 안의 숫자가 따옴표 없는 같은 숫자와
같지 않도록 비교하려는 경우, 즉 값뿐만 아니라
데이터 타입도 비교하고 싶은 경우가 있습니다.
이를 위해 == 연산자 대신
=== 연산자를 사용합니다.
이러한 비교를 엄격한(strict) 비교라고 합니다.
예제를 확인하세요:
<?php
if ('3' === 3) {
echo '+++';
} else {
echo '---'; // 타입이 다르므로 이것이 실행됩니다
}
?>
반면, 두 문자열 '3'을 비교할 때는
'+'가 출력됩니다:
<?php
if ('3' === '3') {
echo '+++'; // 이것이 실행됩니다
} else {
echo '---';
}
?>
숫자를 비교할 때도 마찬가지입니다:
<?php
if (3 === 3) {
echo '+++'; // 이것이 실행됩니다
} else {
echo '---';
}
?>
두 연산자의 차이는 값은 같지만 데이터 타입이 다를 때 명확하게 나타납니다. 다른 경우에는 이 두 연산자는 동일하게 작동합니다. 예를 들어, 다른 숫자를 비교할 때 당연히 마이너스가 출력됩니다:
<?php
if (2 === 3) {
echo '+++';
} else {
echo '---'; // 이것이 실행됩니다
}
?>
현재 PHP에서는 어디에서나 엄격한 비교를 사용하는 것이 일반적입니다. 이렇게 하면 코드가 오류에 덜 취약하다고 여겨집니다.
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
<?php
$test1 = 3;
$test2 = 3;
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>