小編給大家分享一下PHP有哪些運算符,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了朝陽縣免費建站歡迎大家使用!
一、算術(shù)運算符
1. 概覽
2. TIPS
除法運算符總是返回浮點數(shù)。只有在下列情況例外:兩個操作數(shù)都是整數(shù)(或字符串轉(zhuǎn)換成的整數(shù))并且正好能整除,這時它返回一個整數(shù)。
取模運算符的操作數(shù)在運算之前都會轉(zhuǎn)換成整數(shù)(除去小數(shù)部分)。
取模運算符 % 的結(jié)果和被除數(shù)的符號(正負(fù)號)相同。即 $a % $b 的結(jié)果和 $a 的符號相同。例如:
echo (5 % 3)."\n"; // prints 2 echo (5 % -3)."\n"; // prints 2 echo (-5 % 3)."\n"; // prints -2 echo (-5 % -3)."\n"; // prints -2
二、位運算符
1. 概覽
2. TIPS
位移在 PHP 中是數(shù)學(xué)運算。
向任何方向移出去的位都被丟棄。
左移時右側(cè)以零填充,符號位被移走意味著正負(fù)號不被保留。
右移時左側(cè)以符號位填充,意味著正負(fù)號被保留。
使用位運算符時要特別注意優(yōu)先級。例如 :
$a & $b == true 先進(jìn)行比較再進(jìn)行按位與;
($a & $b) == true 則先進(jìn)行按位與再進(jìn)行比較。
三、比較運算符
1. 概覽
2. TIPS
如果比較一個數(shù)字和字符串或者比較涉及到數(shù)字內(nèi)容的字符串,則字符串會被轉(zhuǎn)換為數(shù)值并且比較按照數(shù)值來進(jìn)行。此規(guī)則也適用于 switch 語句。當(dāng)用 === 或 !== 進(jìn)行比較時則不進(jìn)行類型轉(zhuǎn)換,因為此時類型和數(shù)值都要比對。
true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> true switch ("a") { case 0: echo "0"; break; case "a": // 永遠(yuǎn)不會到達(dá)a,因為 "a" 已經(jīng)與 0 匹配 echo "a"; break; } ?>
3. 對于多種類型,比較運算符根據(jù)下表比較(按順序)
4. 松散比較表
四、遞增/遞減運算符
1. 概覽
2. TIPS
遞增/遞減運算符不影響布爾值。
遞減 NULL 值也沒有效果,但是遞增 NULL 的結(jié)果是 1。
在處理字符變量的算數(shù)運算時,PHP 沿襲了 Perl 的習(xí)慣,而非 C 的。
例如,在 Perl 中 $a = 'Z'; $a++; 將把 $a 變成'AA',而在 C 中,a = 'Z'; a++; 將把 a 變成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。
注意字符變量只能遞增,不能遞減,并且只支持純字母(a-z 和 A-Z)。
遞增/遞減其他字符變量則無效,原字符串沒有變化。
五、邏輯運算符
1. 概覽
2. TIPS
“與”和“或”有兩種不同形式運算符的原因是它們運算的優(yōu)先級不同。
// "&&" 比 "and" 的優(yōu)先級高 // 表達(dá)式 (true && false) 的結(jié)果被賦給 $g // 等同于:($g = (true && false)) $g = true && false; // 常量 true 被賦給 $h,false 被忽略 // 等同于:(($h = true) and false) $h = true and false;
六、數(shù)組運算符
1. 概覽
2. TIPS
數(shù)組中的單元如果具有相同的鍵名和值則比較時相等
$a = array("apple", "banana"); $b = array(1 => "banana", "0" => "apple"); var_dump($a == $b); // bool(true) var_dump($a === $b); // bool(false)
+ 運算符 和 array_merge() 的區(qū)別
當(dāng)數(shù)組下標(biāo)為字符時,遇到相同鍵名,+ 運算符會拋棄掉后面的值; array_merge()會用后面的值覆蓋前面的值。
當(dāng)數(shù)組下標(biāo)為數(shù)值時, array_merge()會保留所有的值,并重新索引數(shù)組。+ 運算符同樣會拋棄掉后面具有相同下標(biāo)的值。
$arr1 = ['color' => 'red', 10, 20]; $arr2 = [0, 1, 'color' => 'green']; print_r($arr1 + $arr2); print_r(array_merge($arr1, $arr2));
輸出:
Array ( [color] => red [0] => 10 [1] => 20 ) Array ( [color] => green [0] => 10 [1] => 20 [2] => 0 [3] => 1 )
七、運算符優(yōu)先級
1. 概覽
2. TIPS
如果運算符優(yōu)先級相同,那運算符的結(jié)合方向決定了該如何運算。例如,"-"是左聯(lián)的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且結(jié)果是 -4. 另外一方面,"="是右聯(lián)的,所以 $a = $b = $c 等同于 $a = ($b = $c)。
沒有結(jié)合的相同優(yōu)先級的運算符不能連在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表達(dá)式 1 <= 1 == 1 是合法的, 因為 == 的優(yōu)先級低于 <=。
括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標(biāo)明運算順序,而非靠運算符優(yōu)先級和結(jié)合性來決定,通常能夠增加代碼的可讀性。
著重記憶:
遞增/遞減 > ! > 算術(shù)運算符 > 大小比較 > (不)相等比較 > 引用 > 位運算符(^) > 位運算符(|) > 邏輯與 > 邏輯或 > 三目 > 賦值 > and > xor > or
3. 實戰(zhàn)例題
請寫出下列程序輸出的結(jié)果
$a = 0; $b = 0; if ($a = 3 > 0 || $b = 3 > 0) { $a++; $b++; echo $a. "\n"; echo $b. "\n"; }
例題分析
1.題目中包含 = > || 三種運算符,優(yōu)先級順序為 > > || > =
2.$a = 3 > 0 || $b = 3 > 0 等價于 $a = ( ( 3 > 0 ) || $b = ( 3 > 0 ) )
3.( 3 > 0 ) 為 true,因此不會再運算 || 后面的式子
4.$a = true,所以程序可以改寫為
$a = 0; $b = 0; if ($a = true) { $a++; $b++; echo $a. "\n"; echo $b. "\n"; }
5.因為 “遞增/遞減運算符不影響布爾值”,所以 $a++ 后,$a 的值依然是 true,echo true,會輸出 1
6.因為 $b = 0 ,所以 $b++ 后,$b 的值為 1
7.輸出結(jié)果為
1 1
看完了這篇文章,相信你對PHP有哪些運算符有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!