“!==”和“==!”[已关闭]PHP 中没有运算符==!

昨天,当我修改别人编写的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,但我怀疑他们试图解释它而不是搜索文字字符串)。以前有没有人见过这种情况,并且可以对这种行为进行任何阐明?==!


答案 1

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

此表达式:

$a ==! $b

基本与此相同:

$a == (!$b)

答案 2

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)

组合多个运算符字符可能并不总是作为运算符。例如,如果我们采用 和 ,则仅当它位于 或 的模式中时,它才会作为运算符工作。这些字符可以有许多组合,例如 等。等。。运算符组合应具有唯一的格式唯一的顺序唯一的组合(所有字符都不会与所有其他字符组合),并且绝对不能,它们之间没有任何空格=!!=!==!====!==!

检查下面的运营商列表;

enter image description here


推荐