php类型优先级_PHP: 运算符优先级 - Manual
運算符優先級
運算符優先級指定了兩個表達式綁定得有多“緊密”。例如,表達式 1 + 5 *
3 的結果是 16 而不是 18
是因為乘號(“*”)的優先級比加號(“+”)高。必要時可以用括號來強制改變優先級。例如:(1
+ 5) * 3 的值為 18。
如果運算符優先級相同,那運算符的結合方向決定了該如何運算。例如,"-"是左聯的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3
并且結果是 -4. 另外一方面,"="是右聯的,所以 $a = $b = $c 等同于
$a = ($b = $c)。
沒有結合的相同優先級的運算符不能連在一起使用,例如
1 < 2 > 1 在PHP是不合法的。但另外一方面表達式
1 <= 1 == 1 是合法的, 因為 == 的優先級低于
<=。
括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序,而非靠運算符優先級和結合性來決定,通常能夠增加代碼的可讀性。
下表按照優先級從高到低列出了運算符。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。運算符優先級
結合方向
運算符
附加信息
不適用
clone
new
不適用
++
--
~
(int)
(float)
(string)
(array)
(object)
(bool)
@
左
instanceof
左
<<
>>
無
<
<=
>
>=
無
==
!=
===
!==
<>
<=>
右
=
+=
-=
*=
**=
/=
.=
%=
&=
|=
^=
<<=
>>=
??=
不適用
yield from
不適用
yield
不適用
示例 #1 結合方向
$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.
示例 #2 Undefined order of evaluation
$a=1;
echo$a+$a++;//?may?print?either?2?or?3$i=1;$array[$i]?=$i++;//?may?set?either?index?1?or?2?>
示例 #3 +、- 、. 具有相同的優先級
$x=4;//?this?line?might?result?in?unexpected?output:echo"x?minus?one?equals?".$x-1.",?or?so?I?hope\n";//?because?it?is?evaluated?like?this?line:echo?(("x?minus?one?equals?".$x)?-1)?.",?or?so?I?hope\n";//?the?desired?precedence?can?be?enforced?by?using?parentheses:echo"x?minus?one?equals?".?($x-1)?.",?or?so?I?hope\n";?>
以上例程會輸出:
-1, or so I hope
-1, or so I hope
x minus one equals 3, or so I hope
注意:
盡管 = 比其它大多數的運算符的優先級低,PHP
仍舊允許類似如下的表達式:if (!$a = foo()),在此例中
foo() 的返回值被賦給了 $a。
總結
以上是生活随笔為你收集整理的php类型优先级_PHP: 运算符优先级 - Manual的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 反正多次重复提交_java w
- 下一篇: php gd测试代码,PHP: GD -