教程 > PHP教程 > PHP 基础 阅读:17

PHP 比较运算符

PHP 比较运算符

返回 PHP 运算符


比较运算符就是对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回 true;如果为假,则返回 false。

PHP 中的比较运算符如下表所示:

例子 名称 描述
$a == $b 等于 如果类型转换后 $a 和 $b 的值相等,则返回 TRUE,否则返回 FALSE
$a === $b 全等 如果 $a 和 $b 不仅值相等,而且它们值的类型也相等,则返回 TRUE,否则返回 FALSE
$a != $b 不等于 如果类型转换后 $a 的值不等于 $b 的值,则返回TRUE,否则返回 FALSE
$a <> $b 不等于 与 != 相同,如果类型转换后 $a 的值不等于 $b 的值,则返回 TRUE,否则返回 FALSE
$a !== $b 不全等 如果 $a 的值不等于 $b的值,或者它们值的类型不同,则返回 TRUE,否则返回 FALSE
$a < $b 小与 如果 $a 的值小于 $b 的值,则返回 TRUE,否则返回 FALSE
$a > $b 大于 如果 $a 的值大于 $b 的值,则返回 TRUE,否则返回 FALSE
$a <= $b 小于等于 如果 $a 的值小于或者等于 $b 的值,则返回 TRUE,否则返回 FALSE
$a >= $b 大于等于 如果 $a 的值大于或者等于 $b 的值,则返回 TRUE,否则返回 FALSE
$a <=> $b 太空船运算符(组合比较符) 当 $a小于、等于、大于 $b时 分别返回一个小于、等于、大于0的整型值。 PHP7开始提供.
$a ?? $b ?? $c    NULL合并操作符 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。

其中,我们要重点区分一下“等于”和“全等”,等于==只是对两个变量的值进行了比较运算,而全等===不仅会对运算符两边表达式的值进行比较,而且还会对数据类型进行比较,只有两边的值和数据类型都相等时,运算结果才是 TRUE。

另外,“不等于”和“不全等”也是如此,不等于!=只对运算符两边表达式的值进行比较,而不全等!==不仅会比较运算符两边表达式的值,还会对值的类型进行比较,当两边的值或者数据类型有任意一个不相等时,运算结果才是 TRUE。

示例

<?php
    $a = 10;
    $b = '10';
    if($a == $b){
        echo '$a 和 $b 的值相等!<br>';
        if($a === $b){
            echo '$a 和 $b 的类型也相等!<br>';
        }else{
            echo '$a 和 $b 的类型不相等!<br>';
        }
    }else{
        echo '$a 和 $b 的值不相等!<br>';
    }
?>

运行结果如下:

$a 和 $b 的值相等!
$a 和 $b 的类型不相等!

三元运算符

另一个条件运算符是?:(或三元)运算符 。

示例

赋默认值

<?php
// 三元运算符的例子
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// 以上等同于以下的  if/else 语句
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

?>

表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 true 时的值为 expr2,在 expr1 求值为 false 时的值为 expr3。

可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 true 时返回 expr1,否则返回 expr3。

注意: 注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句 return $var == 42 ? $a : $b; 将不起作用,以后的 PHP 版本会为此发出一条警告。

注意: 建议避免将三元运算符堆积在一起使用。和其他语言相比, 当在一条语句中使用多个三元运算符时会造成 PHP 运算结果不清晰。 甚至在 PHP 8.0.0 之前,三元运算符是从左到右执行的, 而大多数其他编程语言是从右到左的。 不清晰的三元运算符行为

<?php
// 乍看起来下面的输出是 'true'
echo (true?'true':false?'t':'f');
// 然而,上面语句的实际输出是't',因为在 PHP 8.0.0 之前三元运算符是从左往右计算的
// 下面是与上面等价的语句,但更清晰
echo ((true ? 'true' : 'false') ? 't' : 'f');
?>

返回 PHP 运算符

查看笔记

扫码一下
查看教程更方便