어제 나는 다른 사람이 작성한 PHP 코드를 수정했을 때 이것을 우연히 발견했습니다. 간단한 비교 ( if ($var ==! " ")
)가 예상대로 작동하지 않는다고 당황했습니다 . 몇 가지 테스트를 한 후에 나는 그 코드를 작성한 사람이 비교 연산자 ==!
대신 사용되는 것을 깨달았습니다 !==
. 나는 ==!
어떤 언어 에서도 본 적이 없으므로이 코드가 어떻게 작동하고 테스트를 수행했는지 궁금해했습니다.
<?php
echo "int\n";
echo "1 !== 0: "; var_dump(1 !== 0);
echo "1 !== 1: "; var_dump(1 !== 1);
echo "1 ==! 0: "; var_dump(1 ==! 0);
echo "1 ==! 1: "; var_dump(1 ==! 1);
echo "bool\n";
echo "true !== false: "; var_dump(true !== false);
echo "true !== true: "; var_dump(true !== true);
echo "true ==! false: "; var_dump(true ==! false);
echo "true ==! true: "; var_dump(true ==! true);
echo "string\n";
echo '"a" !== " ": '; var_dump("a" !== " ");
echo '"a" !== "a": '; var_dump("a" !== "a");
echo '"a" ==! " ": '; var_dump("a" ==! " ");
echo '"a" ==! "a": '; var_dump("a" ==! "a");
?>
이 결과는 다음과 같습니다.
int
1 !== 0: bool(true)
1 !== 1: bool(false)
1 ==! 0: bool(true)
1 ==! 1: bool(false)
bool
true !== false: bool(true)
true !== true: bool(false)
true ==! false: bool(true)
true ==! true: bool(false)
string
"a" !== " ": bool(true)
"a" !== "a": bool(false)
"a" ==! " ": bool(false)
"a" ==! "a": bool(false)
연산자는 부울 및 정수 변수에는 작동하지만 문자열에는 작동하지 않는 것 같습니다. ==!
PHP 문서 또는 검색 엔진 (Google, Bing, DuckDuckGo를 사용해 보았지만 리터럴 문자열을 검색하는 대신 해석하려고 시도하는 경우)에서 PHP 문서 또는 관련 내용을 찾을 수 없습니다 . 아무도 전에 이것을 보았고이 행동에 빛을 비출 수 있습니까?