PHP>!操作员不是合法的,但可以工作

时间:2018-10-25 07:19:08

标签: php comparison operators

所以我在PHP 5.6中使用了>!比较运算符,它可以工作。它没有出现在任何运营商文档中,我感到困惑,为什么它起作用,为什么PHPStorm不抱怨它?即使!($foo > $bar)是正确的语法。.

2 个答案:

答案 0 :(得分:4)

您的>!运算符实际上是两个运算符:>!!应用于第二个参数:

var_dump(!4);     // `false`
var_dump(3 >! 4); // `true`

true的最后一种情况如何:

var_dump(3 >! 4)var_dump(3 >(! 4))相同,因为operators precedence

  • 首先,将!应用于4会给您false
  • 秒,比较3false会得到true,因为3truthy的值,总是比任何falsy / false值。

作为练习,您可以了解以下棘手的情况:

var_dump(0 > !0);   // false
var_dump(-3 > !0);  // false

答案 1 :(得分:0)

作为变量比较运算符,它似乎对我不起作用。在php 5.6中,结果不一致:

$a = 10;
$b = 5;

var_dump($a >! $b);

返回true

但是

$a = 10;
$b = 11;

var_dump($a >! $b);

再次返回true

正如其他人所述,您的变量被评估为false,这使得if语句在上面的代码中返回true