首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >"!==“和"==!”的区别

"!==“和"==!”的区别
EN

Stack Overflow用户
提问于 2012-09-07 15:11:03
回答 3查看 8.3K关注 0票数 162

昨天当我修改别人写的PHP代码时,我偶然发现了这一点。我很困惑,一个简单的比较(if ($var ==! " "))并没有像预期的那样工作。经过一些测试后,我意识到无论是谁编写了这些代码,都使用==!而不是!==作为比较运算符。我从来没有在任何语言中见过==!,所以我想知道这个见鬼的代码是如何工作的,并做了一些测试:

代码语言:javascript
复制
<?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");
?>

这将产生以下输出:

代码语言:javascript
复制
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文档或任何搜索引擎上都找不到==! (我试过谷歌、必应、DuckDuckGo,但我怀疑他们试图解释它,而不是搜索文字字符串)。有没有人之前见过这种情况,并能对这种行为做出任何解释?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-07 15:13:25

不同之处在于没有运算符==!

此表达式:

代码语言:javascript
复制
$a ==! $b

基本上是这样的:

代码语言:javascript
复制
$a == (!$b)
票数 243
EN

Stack Overflow用户

发布于 2012-09-07 15:12:58

==!不是一个运算符,而是两个:

==!

优先级高于==!

所以:

"a" !== " ": bool(true) --> true,因为"a“实际上不等于”“

"a" ==! " ": bool(false) --> false,因为"a“不等于!”“

可以使用==和!之间的空格来编写。

票数 38
EN

Stack Overflow用户

发布于 2012-09-07 15:13:11

==!不是运算符

==!根本不是一个php比较运算符--它和== !是一样的(注意空格)

也就是说。

代码语言:javascript
复制
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)
}
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12313423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档