比較運算符,如同它們名稱所暗示的,容許對兩個值進行比較。還可以參考
PHP 類型比較表看不同類型相互比較的例子。
表格 15-4. 比較運算符
例子 | 名稱 | 結果 |
---|
$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 引進) |
$a < $b | 小與 | TRUE,若果 $a 嚴格小於 $b。 |
$a > $b | 大於 | TRUE,若果 $a 嚴格 $b。 |
$a <= $b | 小於等於 | TRUE,若果 $a 小於或是等於 $b。 |
$a >= $b | 大於等於 | TRUE,若果 $a 大於或是等於 $b。 |
若果比較一個整數和字串,則字串會被轉換為整數。若果比較兩個數字字串,則作為整數比較。此規則也適用於
switch 語句。
對於多種的類型,比較運算符根據下表比較(按順序)。
例子 15-2. 標準陣列比較代碼
<?php // 陣列是用標準比較運算符這樣比較的 function standard_array_compare($op1, $op2) { if (count($op1) < count($op2)) { return -1; // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1; // $op1 > $op2 } foreach ($op1 as $key => $val) { if (!array_key_exists($key, $op2)) { return null; // uncomparable } elseif ($val < $op2[$key]) { return -1; } elseif ($val > $op2[$key]) { return 1; } } return 0; // $op1 == $op2 } ?>
|
|
參見 strcasecmp(),strcmp(),陣列運算符和類型一章。
另一個條件運算符是「?:」(或三元)運算符 。
例子 15-3. 賦預設值
<?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。
注:
注意三元運算符是個語句,因此其求值不是變量,而是語句的結果。若果想通過引用返回一個變量這點就很重要。在一個通過引用返回的函數中語句
return $var == 42 ? $a : $b; 將不起作用,以後的 PHP
版本會為此發出一條警示。