本文講述了PHP運(yùn)算符的幾個(gè)種類:算術(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ùn)算符允許對(duì)整型數(shù)中指定的位進(jìn)行置位。如果左右參數(shù)都是字符串,則位運(yùn)算符將操作這個(gè)字符串中的字符。
<?php echo 12 ^ 9; // Outputs '5' echo "12" ^ "9"; // Outputs the Backspace character (ascii 8) // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8 echo "hallo" ^ "hello"; // Outputs the ascii values #0 #4 #0 #0 #0 // 'a' ^ 'e' = #4 ?> |
例子 | 名稱 | 結(jié)果 |
---|---|---|
$a & $b | And(按位與) | 將在 $a 和 $b 中都為 1 的位設(shè)為 1。 |
$a | $b | Or(按位或) | 將在 $a 或者 $b 中為 1 的位設(shè)為 1。 |
$a ^ $b | Xor(按位異或) | 將在 $a 和 $b 中不同的位設(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)算符
比較運(yùn)算符,如同它們名稱所暗示的,允許你對(duì)兩個(gè)值進(jìn)行比較。
例子 | 名稱 | 結(jié)果 |
---|---|---|
$a == $b | 等于 | TRUE,如果 $a 等于 $b。 |
$a === $b | 全等 | TRUE,如果 $a 等于 $b,并且它們的類型也相同。(PHP 4 only) |
$a != $b | 不等 | TRUE,如果 $a 不等于 $b。 |
$a <> $b | 不等 | TRUE,如果 $a 不等于 $b。 |
$a !== $b | 非全等 | TRUE,如果 $a 不等于 $b,或者它們的類型不同。(PHP 4 only) |
$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è)條件運(yùn)算符是“?:”(或三元)運(yùn)算符,它和 C 以及很多其它語(yǔ)言的操作一樣。
<?php // Example usage for: Ternary Operator $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // The above is identical to this if/else statement if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?> |
對(duì)于表達(dá)式 (expr1) ? (expr2) : (expr3),如果 expr1 的值為 TRUE,則此表達(dá)式的值為 expr2,如果 expr1 的值為 FALSE,則此表達(dá)式的值為 expr3。
錯(cuò)誤控制運(yùn)算符
PHP 支持一個(gè)錯(cuò)誤控制運(yùn)算符:@。當(dāng)將其放置在一個(gè) PHP 表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都被忽略掉。
如果激活了 track_errors 特性,表達(dá)式所產(chǎn)生的任何錯(cuò)誤信息都被存放在變量 $php_errormsg 中。此變量在每次出錯(cuò)時(shí)都會(huì)被覆蓋,所以如果想用它的話就要盡早檢查。
<?php /* Intentional file error */ $my_file = @file ('non_existent_file') or die ("Failed opening file: error was '$php_errormsg'"); // this works for any expression, not just functions: $value = @$cache[$key]; // will not issue a notice if the index $key doesn't exist. ?> |
注: @ 運(yùn)算符只對(duì)表達(dá)式有效。對(duì)新手來(lái)說(shuō)一個(gè)簡(jiǎn)單的規(guī)則就是:如果你能從某處得到值,你就能在它前面加上 @ 運(yùn)算符。例如,你可以把它放在變量,函數(shù)和 include() 調(diào)用,常量,等等之前。不能把它放在函數(shù)或類的定義之前,也不能用于條件結(jié)構(gòu)例如 if 和 foreach 等。
注: 錯(cuò)誤控制前綴“@”不會(huì)屏蔽解析錯(cuò)誤的信息。
警告
目前的“@”錯(cuò)誤控制運(yùn)算符前綴甚至使導(dǎo)致腳本終止的嚴(yán)重錯(cuò)誤的錯(cuò)誤報(bào)告也失效。這意味著如果你在某個(gè)不存在或類型錯(cuò)誤的函數(shù)調(diào)用前用了“@”來(lái)抑制錯(cuò)誤信息,那腳本會(huì)沒(méi)有任何跡象顯示原因而死在那里。