本文講述了PHP運算符的幾個種類:算術(shù)運算符,賦值運算符,位運算符,比較運算符,錯誤控制運算符,執(zhí)行運算符,加一/減一運算符,邏輯運算符,字符串運算符,數(shù)組運算符等等。
AD:
位運算符
位運算符允許對整型數(shù)中指定的位進行置位。如果左右參數(shù)都是字符串,則位運算符將操作這個字符串中的字符。
<?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 中的位向左移動 $b 次(每一次移動都表示“乘以 2”)。 |
$a >> $b | Shift right(右移) | 將 $a 中的位向右移動 $b 次(每一次移動都表示“除以 2”)。 |
比較運算符
比較運算符,如同它們名稱所暗示的,允許你對兩個值進行比較。
例子 | 名稱 | 結(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 嚴格小于 $b。 |
$a > $b | 大于 | TRUE,如果 $a 嚴格 $b。 |
$a <= $b | 小于等于 | TRUE,如果 $a 小于或者等于 $b。 |
$a >= $b | 大于等于 | TRUE,如果 $a 大于或者等于 $b。 |
另外一個條件運算符是“?:”(或三元)運算符,它和 C 以及很多其它語言的操作一樣。
<?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']; } ?> |
對于表達式 (expr1) ? (expr2) : (expr3),如果 expr1 的值為 TRUE,則此表達式的值為 expr2,如果 expr1 的值為 FALSE,則此表達式的值為 expr3。
錯誤控制運算符
PHP 支持一個錯誤控制運算符:@。當將其放置在一個 PHP 表達式之前,該表達式可能產(chǎn)生的任何錯誤信息都被忽略掉。
如果激活了 track_errors 特性,表達式所產(chǎn)生的任何錯誤信息都被存放在變量 $php_errormsg 中。此變量在每次出錯時都會被覆蓋,所以如果想用它的話就要盡早檢查。
<?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. ?> |
注: @ 運算符只對表達式有效。對新手來說一個簡單的規(guī)則就是:如果你能從某處得到值,你就能在它前面加上 @ 運算符。例如,你可以把它放在變量,函數(shù)和 include() 調(diào)用,常量,等等之前。不能把它放在函數(shù)或類的定義之前,也不能用于條件結(jié)構(gòu)例如 if 和 foreach 等。
注: 錯誤控制前綴“@”不會屏蔽解析錯誤的信息。
警告
目前的“@”錯誤控制運算符前綴甚至使導致腳本終止的嚴重錯誤的錯誤報告也失效。這意味著如果你在某個不存在或類型錯誤的函數(shù)調(diào)用前用了“@”來抑制錯誤信息,那腳本會沒有任何跡象顯示原因而死在那里。