否定的实例

Mat*_*hew 55 php instanceof

否定instanceof的正确格式是什么?

if ( ! $a instanceof stdClass)
Run Code Online (Sandbox Code Playgroud)

要么

if ( ! ($a instanceof stdClass) ) 
Run Code Online (Sandbox Code Playgroud)

我已经说服自己后者是正确的方式,可能是几年前阅读一篇博客文章后,但经过一些命令行测试后,它们似乎都是等价的.吗?

Álv*_*lez 84

我们来看看文档:

下表按优先顺序列出了运算符,最高优先级位于顶部.[...]

Associativity      Operators       Additional Information
================== =============== ======================
non-associative    instanceof      types
right              !               logical
Run Code Online (Sandbox Code Playgroud)

因此instanceof具有更高的优先级,因此两个语句都是等价的 括号可能用于使其显而易见,因此您无需在文档中查找它.

  • +包含运算符优先级. (2认同)

Jas*_*ary 13

它们是等价的吗?

是的,逻辑上它们是等价的.答案阿尔瓦罗·维卡里奥G.提供更详细的原因.

否定实例的正确格式是什么?

在这两者中,有一个论点认为以下内容更具可读性.但没有单一的方法.这就是PHP的美丽和诅咒.

!($a instanceof stdClass)
Run Code Online (Sandbox Code Playgroud)