【发布时间】:2021-10-26 23:08:18
【问题描述】:
我对 PHP 的优先级有点困惑??运算符。
https://www.php.net/manual/en/language.operators.precedence.php 表示它的优先级低于 /(除)运算符。如果这是真的,$a??1/0 应该总是给出错误,不仅当$a 是Null,因为它首先评估1/0。由于它没有给出“除以零”错误,我假设?? 运算符的两侧被评估为两个不同的表达式,第二个仅在第一个产生Null 时才被评估。虽然以这种方式实现它绝对有意义,但这是否与上页所述的优先级相矛盾?
【问题讨论】:
-
从Manual 判断
??完全按照它应该的方式工作。看看??翻译成什么,你就会明白为什么当$a不为空时它不会出错 -
/确实具有优先权,但肯定会给予($a) or (error)- 这就是您在帖子后半部分所说的,并且与优先权不矛盾。它只是在is $a null部分之前执行1/0部分。 -
我很清楚 如何 评估这两个表达式。我的问题源于这样一个事实,即这种评估顺序(对我而言)似乎与规定的运算符优先级相矛盾。
标签: php