首页 > 编程知识 正文

php中的逻辑运算符优先级问题(php 运算符优先级)

时间:2023-12-07 13:39:25 阅读:312999 作者:EIYW

本文目录一览:

  • 1、php中的运算符优先级是什么样的
  • 2、php逻辑运算符和括号哪个优先级高啊
  • 3、关于php运算符优先级问题

php中的运算符优先级是什么样的

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

运算符优先级

结合方向

运算符

附加信息

clone new

clone 和 new

[

array()

**

算术运算符

++

--

~

(int)

(float)

(string)

(array)

(object)

(bool)

@

类型和递增/递减

instanceof

类型

!

逻辑运算符

*

/

%

算术运算符

+

-

.

算术运算符和字符串运算符

位运算符

=

=

比较运算符

==

!=

===

!==

=

比较运算符

位运算符和引用

^

位运算符

|

位运算符

逻辑运算符

||

逻辑运算符

??

比较运算符

? :

ternary

right

=

+=

-=

*=

**=

/=

.=

%=

=

|=

^=

=

=

赋值运算符

and

逻辑运算符

xor

逻辑运算符

or

逻辑运算符

Example #1 结合方向

?php

$a = 3 * 3 % 5; // (3 * 3) % 5 = 4

// ternary operator associativity differs from C/C++

$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;

$b = 2;

$a = $b += 3; // $a = ($b += 3) - $a = 5, $b = 5

?

Operator precedence and associativity only determine how expressions

are grouped, they do not specify an order of evaluation. PHP does not

(in the general case) specify in which order an expression is evaluated

and code that assumes a specific order of evaluation should be avoided,

because the behavior can change between versions of PHP or depending on

the surrounding code.

Example #2 Undefined order of evaluation

?php

$a = 1;

echo $a + $a++; // may print either 2 or 3

$i = 1;

$array[$i] = $i++; // may set either index 1 or 2

?

Note:

尽管 = 比其它大多数的运算符的优先级低,PHP

仍旧允许类似如下的表达式:if (!$a = foo()),在此例中

foo() 的返回值被赋给了 $a。

php逻辑运算符和括号哪个优先级高啊

括号中的优先级更高,括号中运算结束后才会执行逻辑运算

如: 1 == (2-1)

关于php运算符优先级问题

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

运算符优先级

结合方向

运算符

附加信息

无 clone new clone 和 new

左 [ array()

右 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减

无 instanceof 类型

右 ! 逻辑运算符

左 * / % 算术运算符

左 + - . 算术运算符和字符串运算符

左 位运算符

无 == != === !== 比较运算符

左 位运算符和引用

左 ^ 位运算符

左 | 位运算符

左 逻辑运算符

左 || 逻辑运算符

左 ? : 三元运算符

右 = += -= *= /= .= %= = |= ^= = = = 赋值运算符

左 and 逻辑运算符

左 xor 逻辑运算符

左 or 逻辑运算符

左 , 多处用到

对具有相同优先级的运算符,左结合方向意味着将从左向右求值,右结合方向则反之。对于无结合方向具有相同优先级的运算符,该运算符有可能无法与其自身结合。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。