本文講述了PHP運(yùn)算符的幾個(gè)種類(lèi):算術(shù)運(yùn)算符,賦值運(yùn)算符,位運(yùn)算符,比較運(yùn)算符,錯(cuò)誤控制運(yùn)算符,執(zhí)行運(yùn)算符,加一/減一運(yùn)算符,邏輯運(yùn)算符,字符串運(yùn)算符,數(shù)組運(yùn)算符等等。
AD:
運(yùn)算符優(yōu)先級(jí)
運(yùn)算符優(yōu)先級(jí)指定了兩個(gè)表達(dá)式綁定得有多“緊密”。例如,表達(dá)式 1 + 5 * 3 的結(jié)果是 16 而不是 18 是因?yàn)槌颂?hào)(“*”)的優(yōu)先級(jí)比加號(hào)(“+”)高。必要時(shí)可以用括號(hào)來(lái)強(qiáng)制改變優(yōu)先級(jí)。例如:(1 + 5) * 3 的值為 18。
下表從低到高列出了運(yùn)算符的優(yōu)先級(jí)。
運(yùn)算符優(yōu)先級(jí)
結(jié)合方向 | 運(yùn)算符 |
---|---|
左 | , |
左 | or |
左 | xor |
左 | and |
右 | |
右 | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左 | ? : |
左 | || |
左 | && |
左 | | |
左 | ^ |
左 | & |
無(wú) | == != === !== |
無(wú) | < <= > >= |
左 | << >> |
左 | + – . |
左 | * / % |
右 | ! ~ ++ — (int) (float) (string) (array) (object) @ |
右 | [ |
無(wú) | new |
注: 盡管 ! 比 = 的優(yōu)先級(jí)高,PHP 仍舊允許類(lèi)似如下的表達(dá)式:if (!$a = foo()),在此例中 foo() 的輸出被賦給了 $a。
算術(shù)運(yùn)算符
還記得學(xué)校里學(xué)到的基本數(shù)學(xué)知識(shí)嗎?就和它們一樣。
算術(shù)運(yùn)算符
例子 | 名稱(chēng) | 結(jié)果 |
---|---|---|
$a + $b | 加法 | $a 和 $b 的和。 |
$a – $b | 減法 | $a 和 $b 的差。 |
$a * $b | 乘法 | $a 和 $b 的積。 |
$a / $b | 除法 | $a 除以 $b 的商。 |
$a % $b | 取模 | $a 除以 $b 的余數(shù)。 |
除號(hào)(“/”)總是返回浮點(diǎn)數(shù),即使兩個(gè)運(yùn)算數(shù)是整數(shù)(或由字符串轉(zhuǎn)換成的整數(shù))也是這樣。
賦值運(yùn)算符
基本的賦值運(yùn)算符是“=”。你一開(kāi)始可能會(huì)以為它是“等于”,其實(shí)不是的。它實(shí)際上意味著把右邊表達(dá)式的值賦給左運(yùn)算數(shù)。
賦值運(yùn)算表達(dá)式的值也就是所賦的值。也就是說(shuō),“$a = 3”的值是 3。這樣就可以使你做一些小技巧:
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4. |
在基本賦值運(yùn)算符之外,還有適合于所有二元算術(shù)和字符串運(yùn)算符的“組和運(yùn)算符”,這可以讓你在一個(gè)表達(dá)式中使用它的值并把表達(dá)式的結(jié)果賦給它,例如:
$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!"; |
注意賦值運(yùn)算將原變量的值拷貝到新變量中(傳值賦值),所以改變其中一個(gè)并不影響另一個(gè)。這也適合于你在在緊密循環(huán)中拷貝一些值例如大數(shù)值。PHP 4 支持引用賦值,用 $var = &$othervar; 語(yǔ)法,但在 PHP 3 中不可能這樣做?!耙觅x值”意味著兩個(gè)變量都指向同一個(gè)數(shù)據(jù),沒(méi)有任何數(shù)據(jù)的拷貝。