運算子優先順序
運算子優先順序指定了兩個運算式綁定得有多“緊密”。例如,運算式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優先順序比加號(“+”)高。必要時可以用括弧來強制改變優先順序。例如:(1 + 5) * 3 的值為 18。
下表從低到高列出了運算子的優先順序。
運算子優先順序
| 結合方向 |
運算子 |
| 左 |
, |
| 左 |
or |
| 左 |
xor |
| 左 |
and |
| 右 |
print |
| 右 |
= += -= *= /= .= %= &= |= ^= ~= <<= >>= |
| 左 |
? : |
| 左 |
|| |
| 左 |
&& |
| 左 |
| |
| 左 |
^ |
| 左 |
& |
| 無 |
== != === !== |
| 無 |
< <= > >= |
| 左 |
<< >> |
| 左 |
+ - . |
| 左 |
* / % |
| 右 |
! ~ ++ -- (int) (float) (string) (array) (object) @ |
| 右 |
[ |
| 無 |
new |
注: 儘管 ! 比 = 的優先順序高,PHP 仍舊允許類似如下的運算式:if (!$a = foo()),在此例中 foo() 的輸出被賦給了 $a。
算術運算子
還記得學校裡學到的基本數學知識嗎?就和它們一樣。
算術運算子
| 例子 |
名稱 |
結果 |
| $a + $b |
加法 |
$a 和 $b 的和。 |
| $a - $b |
減法 |
$a 和 $b 的差。 |
| $a * $b |
乘法 |
$a 和 $b 的積。 |
| $a / $b |
除法 |
$a 除以 $b 的商。 |
| $a % $b |
模數 |
$a 除以 $b 的餘數。 |
除號(“/”)總是返回浮點數,即使兩個運算數是整數(或由字串轉換成的整數)也是這樣。
賦值運算子
基本的賦值運算子是“=”。你一開始可能會以為它是“等於”,其實不是的。它實際上意味著把右邊運算式的值賦給左運算數。
賦值運算運算式的值也就是所賦的值。也就是說,“$a = 3”的值是 3。這樣就可以使你做一些小技巧:
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4. |
在基本賦值運算子之外,還有適合於所有二元算術和字串運算子的“組和運算子”,這可以讓你在一個運算式中使用它的值並把運算式的結果賦給它,例如:
$a = 3;$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;$b = "Hello ";$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!"; |
注意賦值運算將原變數的值拷貝到新變數中(傳值賦值),所以改變其中一個並不影響另一個。這也適合於你在在緊密迴圈中拷貝一些值例如大數值。PHP 4 支援引用賦值,用 $var = &$othervar; 文法,但在 PHP 3 中不可能這樣做。“引用賦值”意味著兩個變數都指向同一個資料,沒有任何資料的拷貝。
1
http://www.bkjia.com/PHPjc/446731.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446731.htmlTechArticle運算子優先順序 運算子優先順序指定了兩個運算式綁定得有多“緊密”。例如,運算式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優...