本文講述了PHP運算符的幾個種類:算術運算符,賦值運算符,位運算符,比較運算符,錯誤控制運算符,執行運算符,加一/減一運算符,邏輯運算符,字符串運算符,數組運算符等等。
AD:
運算符優先級
運算符優先級指定了兩個表達式綁定得有多“緊密”。例如,表達式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優先級比加號(“+”)高。必要時可以用括號來強制改變優先級。例如:(1 + 5) * 3 的值為 18。
下表從低到高列出了運算符的優先級。
運算符優先級
結合方向 | 運算符 |
---|---|
左 | , |
左 | or |
左 | xor |
左 | and |
右 | |
右 | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左 | ? : |
左 | || |
左 | && |
左 | | |
左 | ^ |
左 | & |
無 | == != === !== |
無 | < <= > >= |
左 | << >> |
左 | + – . |
左 | * / % |
右 | ! ~ ++ — (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 中不可能這樣做。“引用賦值”意味著兩個變量都指向同一個數據,沒有任何數據的拷貝。