運(yùn)算符可按照其能接受幾個(gè)值來分組。一元運(yùn)算符只能接受一個(gè)值,例如 !(邏輯取反運(yùn)算符)或 ++(遞增運(yùn)算符)。二元運(yùn)算符可接受兩個(gè)值,例如熟悉的算術(shù)運(yùn)算符 +(加)和 -(減),大多數(shù) PHP 運(yùn)算符都是這種。最后是唯一的三元運(yùn)算符 ? :,可接受三個(gè)值;通常就簡(jiǎn)單稱之為“三元運(yùn)算符”
站在用戶的角度思考問題,與客戶深入溝通,找到酒泉網(wǎng)站設(shè)計(jì)與酒泉網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋酒泉地區(qū)。運(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)來強(qiáng)制改變優(yōu)先級(jí)。例如:(1 + 5) * 3 的值為 18
如果運(yùn)算符優(yōu)先級(jí)相同,那運(yùn)算符的結(jié)合方向決定了該如何運(yùn)算。例如,"-"是左聯(lián)的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且結(jié)果是 -4. 另外一方面,"="是右聯(lián)的,所以 a=a=b = c等同于c等同于a = (b=b=c)
[注意]沒有結(jié)合的相同優(yōu)先級(jí)的運(yùn)算符不能連在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表達(dá)式 1 <= 1 == 1 是合法的, 因?yàn)?== 的優(yōu)先級(jí)低于 <=
優(yōu)先級(jí)
結(jié)合方向 運(yùn)算符 附加信息 無 clone new clone 和 new左 [ array() 右 ++ -- ~ 類型和遞增/遞減 無 instanceof 類型 右 ! 邏輯運(yùn)算符 左 * / % 算術(shù)運(yùn)算符 左 + - . 算術(shù)運(yùn)算符和字符串運(yùn)算符 左 << >> 位運(yùn)算符 無 < <= > >= 比較運(yùn)算符 無 == != === !== <> <=> 比較運(yùn)算符 左 & 位運(yùn)算符和引用 左 ^ 位運(yùn)算符 左 | 位運(yùn)算符 左 && 邏輯運(yùn)算符 左 || 邏輯運(yùn)算符 左 ?? 比較運(yùn)算符 左 ? : ternary 右 = += -= *= **= /= .= %= &= |= ^= <<= >>= 賦值運(yùn)算符 左 and 邏輯運(yùn)算符 左 xor 邏輯運(yùn)算符 左 or 邏輯運(yùn)算符
-$a 取反 $a 的負(fù)值。$a + $b 加法 $a 和 $b 的和。$a - $b 減法 $a 和 $b 的差。$a * $b 乘法 $a 和 $b 的積。$a / $b 除法 $a 除以 $b 的商。$a % $b 取模 $a 除以 $b 的余數(shù)
除法運(yùn)算符總是返回浮點(diǎn)數(shù)。只有在下列情況例外:兩個(gè)操作數(shù)都是整數(shù)(或字符串轉(zhuǎn)換成的整數(shù))并且正好能整除,這時(shí)它返回一個(gè)整數(shù)
取模運(yùn)算符的操作數(shù)在運(yùn)算之前都會(huì)轉(zhuǎn)換成整數(shù)(除去小數(shù)部分)
取模運(yùn)算符 % 的結(jié)果和被除數(shù)的符號(hào)(正負(fù)號(hào))相同。即 a % b 的結(jié)果和 a 的符號(hào)相同
基本的賦值運(yùn)算符是“=”,它實(shí)際上意味著把右邊表達(dá)式的值賦給左邊的運(yùn)算數(shù)
賦值運(yùn)算表達(dá)式的值也就是所賦的值。也就是說,“$a = 3”的值是 3
在基本賦值運(yùn)算符之外,還有適合于所有二元算術(shù),數(shù)組集合和字符串運(yùn)算符的“組合運(yùn)算符”,這樣可以在一個(gè)表達(dá)式中使用它的值并把表達(dá)式的結(jié)果賦給它
x = y x += y x -= y x *= y x /= y x %= y
引用賦值
PHP 支持引用賦值,引用賦值意味著兩個(gè)變量指向了同一個(gè)數(shù)據(jù),沒有拷貝任何東西
遞增/遞減
例子 名稱 效果++$a 前加 $a 的值加一,然后返回 $a$a++ 后加 返回 $a,然后將 $a 的值加一--$a 前減 $a 的值減一, 然后返回 $a$a-- 后減 返回 $a,然后將 $a 的值減一
位運(yùn)算符允許對(duì)整型數(shù)中指定的位進(jìn)行求值和操作
例子 名稱 結(jié)果$a & $b And(按位與) 將把 $a 和 $b 中都為 1 的位設(shè)為 1$a | $b Or(按位或) 將把 $a 和 $b 中任何一個(gè)為 1 的位設(shè)為 1$a ^ $b Xor(按位異或) 將把 $a 和 $b 中一個(gè)為 1 另一個(gè)為 0 的位設(shè)為 1 ~ $a Not(按位取反) 將 $a 中為 0 的位設(shè)為 1,反之亦然$a << $b Shift left(左移) 將 $a 中的位向左移動(dòng) $b 次(每一次移動(dòng)都表示“乘以 2”)$a >> $b Shift right(右移) 將 $a 中的位向右移動(dòng) $b 次(每一次移動(dòng)都表示“除以 2”)
比較運(yùn)算符,如同它們名稱所暗示的,允許對(duì)兩個(gè)值進(jìn)行比較
例子 名稱 結(jié)果$a == $b 等于 TRUE,如果類型轉(zhuǎn)換后 $a 等于 $b$a === $b 全等 TRUE,如果 $a 等于 $b,并且它們的類型也相同$a != $b 不等 TRUE,如果類型轉(zhuǎn)換后 $a 不等于 $b$a <> $b 不等 TRUE,如果類型轉(zhuǎn)換后 $a 不等于 $b$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它們的類型不同$a < $b 小與 TRUE,如果 $a 嚴(yán)格小于 $b$a > $b 大于 TRUE,如果 $a 嚴(yán)格大于 $b$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b
如果比較一個(gè)數(shù)字和字符串或者比較涉及到數(shù)字內(nèi)容的字符串,則字符串會(huì)被轉(zhuǎn)換為數(shù)值并且比較按照數(shù)值來進(jìn)行。此規(guī)則也適用于 switch 語句。當(dāng)用 === 或 !== 進(jìn)行比較時(shí)則不進(jìn)行類型轉(zhuǎn)換,因?yàn)榇藭r(shí)類型和數(shù)值都要比對(duì)
truevar_dump("1" == "01"); // 1 == 1 -> truevar_dump("10" == "1e1"); // 10 == 10 -> truevar_dump(100 == "1e2"); // 100 == 100 -> trueswitch ("a") {case 0: echo "0";//輸出0 break;case "a": echo "a"; break; }?>
比較多種類型
運(yùn)算數(shù) 1 類型 運(yùn)算數(shù) 2 類型 結(jié)果null 或 string string 將 NULL 轉(zhuǎn)換為 "",進(jìn)行數(shù)字或詞匯比較 bool 或 null 任何其它類型 轉(zhuǎn)換為 bool,F(xiàn)ALSE < TRUEobject object 內(nèi)置類可以定義自己的比較,不同類不能比較string、resource、number string、resource、number 將字符串和資源轉(zhuǎn)換成數(shù)字,按普通數(shù)學(xué)比較array array 具有較少成員的數(shù)組較小,如果運(yùn)算數(shù) 1 中的鍵不存在于運(yùn)算數(shù) 2 中則數(shù)組無法比較,否則挨個(gè)值比較object 任何其它類型 object 總是更大array 任何其它類型 array 總是更大
三元運(yùn)算符
"?:"三元運(yùn)算符是一個(gè)比較運(yùn)算符,對(duì)于表達(dá)式(expr1)?(expr2):(expr3),如果expr1的值為true,則此表達(dá)式的值為expr2,否則為expr3
=60?"及格":"不及格"; echo $b;//及格?>
PHP 支持一個(gè)錯(cuò)誤控制運(yùn)算符:@。當(dāng)將其放置在一個(gè) PHP 表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都被忽略掉
[注意]錯(cuò)誤控制前綴@運(yùn)算符只對(duì)表達(dá)式有效,@不會(huì)屏蔽解析錯(cuò)誤的信息,不能把它放在函數(shù)或類的定義之前,也不能用于條件結(jié)構(gòu)如if和foreach等
例子 名稱 結(jié)果$a and $b And(邏輯與) TRUE,如果 $a 和 $b 都為 TRUE$a or $b Or(邏輯或) TRUE,如果 $a 或 $b 任一為 TRUE$a xor $b Xor(邏輯異或) TRUE,如果 $a 或 $b 任一為 TRUE,但不同時(shí)是! $a Not(邏輯非) TRUE,如果 $a 不為 TRUE$a && $b And(邏輯與) TRUE,如果 $a 和 $b 都為 TRUE$a || $b Or(邏輯或) TRUE,如果 $a 或 $b 任一為 TRUE
有兩個(gè)字符串運(yùn)算符。第一個(gè)是連接運(yùn)算符(“.”),它返回其左右參數(shù)連接后的字符串。第二個(gè)是連接賦值運(yùn)算符(“.=”),它將右邊參數(shù)附加到左邊的參數(shù)之后
例子 名稱 結(jié)果$a + $b 聯(lián)合 $a 和 $b 的聯(lián)合$a == $b 相等 如果 $a 和 $b 具有相同的鍵/值對(duì)則為 TRUE$a === $b 全等 如果 $a 和 $b 具有相同的鍵/值對(duì)并且順序和類型都相同則為 TRUE$a != $b 不等 如果 $a 不等于 $b 則為 TRUE$a <> $b 不等 如果 $a 不等于 $b 則為 TRUE$a !== $b 不全等 如果 $a 不全等于 $b 則為 TRUE
"red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; var_dump($z);//array(4) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" } echo "
";var_dump($x == $y);//bool(false)echo "
";var_dump($x === $y);//bool(false)echo "
";var_dump($x != $y);//bool(true)echo "
";var_dump($x <> $y);//bool(true)echo "
";var_dump($x !== $y);//bool(true)?>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。