“! ==”와“==!”의 차이점 [닫은]
어제 나는 다른 사람이 작성한 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 문서 또는 그것에 대해 아무것도에 (구글, 빙, 덕 덕고했지만, 나는 그들이 대신 리터럴 문자열 검색의 해석하려고 생각한다). 아무도 전에 이것을 보았고이 행동에 빛을 비출 수 있습니까?
차이점은 연산자가 없다는 것입니다 ==!
.
이 표현은 :
$a ==! $b
기본적으로 다음과 같습니다.
$a == (!$b)
==!
PHP 에는 연산자 가 없습니다
그 단지의 조합 ==
과 !
. 여기에 관련 연산자 만 있습니다 ==
. 따라서 조합 ==!
은 정상적으로 작동 ==
하고 확인 Equality
하고 나를 믿습니다.
$variable_a ==! $variable_b
그 외에는
$variable_a == (!$variable_b)
따라서;
"a" ==! " ": bool(false)
"a" ==! "a": bool(false) //is same as "a" == (!"a")
과
true ==! false: bool(true)
true ==! true: bool(false)
Combining multiple operators characters may not work as an operator always. for example, if we take =
and !
, it will work as operators only if it is in the pattern of !=
or !==
. There can be numerous combinations for these characters like !====
, !==!
etc.. etc.. Operator combinations should be in unique format, unique order, unique combinations (all characters wont combine with all other characters) and definitely, without any space between them.
Check the operators list below;
==!
is not an operator but two :
==
and !
!
having a higher priority than ==
So :
"a" !== " ": bool(true)
--> true because "a" is really not equal to " "
"a" ==! " ": bool(false)
--> false because "a" is not equals to !" "
Could be written with a space between == and !.
==!
doesn't exist as such. It's a somewhat cryptic notation of == !
As spaces don't matter in those operations, you could just as easily write a --> b
, which evaluates to a-- > b
, but will look strange.
So, as to the question: "a" ==! " "
will be parsed to "a" == !" "
. Negation of a string is covered by casting, meaning any string but "0"
and " "
is, when casted, true
.
Thus, the expression "a" == !" "
will get transferred:
"a" == !" "
"a" == !false
"a" == true
And, as string "a"
is not the same as bool true
, this evaluates the whole expression to false
.
So, what's the moral of the story? Don't let yourself be confused by missing or wrong placed spaces! :)
==! is not an operator
==!
isn't a php comparison operator at all - it is the same as == !
(note the space)
I.e.
if ("a" !== " ") {
// evaluates to true - "a" and " " are not equal
}
if ("a" == !" ") {
// unreachable
} else {
// evaluates to false - "a" is not equal to true (!" " evaluates to true)
}
참고URL : https://stackoverflow.com/questions/12313423/difference-between-and
'Programing' 카테고리의 다른 글
Nachos 소스 코드를 컴파일하는 동안 오류 "gnu / stubs-32.h : 해당 파일 또는 디렉토리가 없습니다" (0) | 2020.06.01 |
---|---|
해시에 새 항목을 추가하는 방법 (0) | 2020.06.01 |
FileProvider-IllegalArgumentException : 구성된 루트를 찾지 못했습니다. (0) | 2020.06.01 |
파이썬에서 RGB 이미지를 그레이 스케일로 어떻게 변환 할 수 있습니까? (0) | 2020.06.01 |
jquery 라이브 호버 (0) | 2020.06.01 |