程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 詳細解讀PHP比較運算符

詳細解讀PHP比較運算符

編輯:關於PHP編程

表格 1. PHP比較運算符

例子 名稱 結果
$a == $b 等於 TRUE,如果 $a 等於 $b。
$a === $b 全等 TRUE,如果 $a 等於 $b,並且它們的類型也相同。(PHP 4 引進)
$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。

如果PHP比較運算符比較一個整數和字符串,則字符串會被轉換為整數。如果比較兩個數字字符串,則作為整數比較。此規則也適用於 switch 語句。

  1. < ?php  
  2. var_dump(0 == "a"); // 0 == 0 -> true  
  3. var_dump("1" == "01"); // 1 == 1 -> true  
  4. switch ("a") {  
  5. case 0:  
  6. echo "0";  
  7. break;  
  8. case "a": // never reached because "a" is already matched with 0  
  9. echo "a";  
  10. break;  
  11. }  
  12. ?>  

如果運算數的類型不同,則根據下表比較(按順序)。

表格 2. PHP比較運算符比較不同類型

運算數 1 類型 運算數 1 類型 結果
null 或 string string 將 NULL 轉換為 "",進行數字或詞匯比較
bool 或 null 任何其它類型 轉換為 bool,FALSE < TRUE
object object 內置類可以定義自己的比較,不同類不能比較,相同類和數組同樣方式比較屬性(PHP 4 中),PHP 5 有其自己的說明

string,resource 或 number string,resource 或 number 將字符串和資源轉換成數字,按普通數學比較
array array 具有較少成員的數組較小,如果運算數 1 中的鍵不存在於運算數 2 中則數組無法比較,否則挨個值比較(見下例)

array 任何其它類型 array 總是更大
object 任何其它類型 object 總是更大

例子 1. 標准數組比較代碼

  1. < ?php  
  2. // 數組是用標准比較運算符這樣比較的  
  3. function standard_array_compare($op1, $op2)  
  4. {  
  5. if (count($op1) < count($op2)) {  
  6. return -1; // $op1 < $op2  
  7. } elseif (count($op1) > count($op2)) {  
  8. return 1; // $op1 > $op2  
  9. }  
  10. foreach ($op1 as $key => $val) {  
  11. if (!array_key_exists($key, $op2)) {  
  12. return null; // uncomparable  
  13. } elseif ($val < $op2[$key]) {  
  14. return -1;  
  15. } elseif ($val > $op2[$key]) {  
  16. return 1;  
  17. }  
  18. }  
  19. return 0; // $op1 == $op2  
  20. }  
  21. ?> 

PHP比較運算符之三元運算符

另一個條件運算符是“?:”(或三元)運算符 。 例子 2. 賦默認值

  1. < ?php  
  2. // Example usage for: Ternary Operator  
  3. $action = (empty($_POST['action'])) 
    ? 'default' : $_POST['action'];  
  4. // The above is identical to 
    this if/else statement  
  5. if (empty($_POST['action'])) {  
  6. $action = 'default';  
  7. } else {  
  8. $action = $_POST['action'];  
  9. }  
  10. ?>   

表達式 (expr1) ? (expr2) : (expr3) 在 expr1 求值為 TRUE 時的值為 expr2,在 expr1 求值為 FALSE 時的值為 expr3。

注: 注意三元運算符是個語句,因此其求值不是變量,而是語句的結果。如果想通過引用返回一個變量這點就很重要。在一個通過引用返回的函數中語句 return $var == 42 ? $a : $b; 將不起作用,以後的 PHP 版本會為此發出一條警告。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved