運算符優先級
運算符優先級指定了兩個表達式綁定得有多“緊密”。例如,表達式 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 = 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