63

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

if ( ! $a instanceof stdClass)

或者

if ( ! ($a instanceof stdClass) ) 

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

4

2 回答 2

98

让我们阅读文档

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

Associativity      Operators       Additional Information
================== =============== ======================
non-associative    instanceof      types
right              !               logical

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

于 2013-01-16T16:08:45.127 回答
16

它们是等价的吗?

是的,从逻辑上讲,它们是等价的。Álvaro G. Vicario回答提供了更多详细信息。

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

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

!($a instanceof stdClass)
于 2013-01-16T16:07:14.693 回答