PHP三元运算符

和C语言一样,PHP 中也有三元运算符,三元运算符可以实现简单的条件判断功能,即根据第一个表达式的结果在另外两个表达式中选择一个并执行,三元运算符也被称为三目运算符或者条件运算符。

三元运算符的功能与“if else”语句一致,它可以在一行中书写,代码精练、执行效率更高。在 PHP 程序中恰当地使用三元运算符能够让脚本更为简洁、高效。

三元运算符的语法格式如下:

(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3

如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。

示例代码如下:
<?php
    $a = 10;
    $a % 2 == 0 ? print '$a 是偶数!' : print '$a 是奇数!';
?>
运行结果如下:

$a 是偶数!

另外 expr2 和 expr3 也可以使用单引号('')或双引号("")来省略其中的任意一个,来避免不必要的代码,如下所示:
<?php
    $a = 10;
    $b = 7;
    $a % 2 == 0 ? print '$a 是偶数!<br>' : "";
    $b % 2 == 0 ? '' : print '$b 是奇数!';
?>
运行结果如下:

$a 是偶数!
$b 是奇数!

注意:使用三元运算符时,如果需要打印字符串,建议使用 print 语句替代 echo 语句。

不仅如此,三元运算符还可以扩展使用,当设置的条件成立或不成立,执行语句都可以不止一句,语法格式如下:

(expr1) ? (expr2).(expr3) : (expr4).(expr5);

可以看到,多个执行语句之间可以使用用字符串运算符“.”连接起来,各个执行语句用小括号包裹起来以表明它是一个独立而完整的执行语句。

同时三元运算符还可以嵌套使用,示例如下所示例:
<?php
    $a = 10;
    $b = 6;
    $c = 12;
    $x = $a>$b ? ($a<$c ? $c-$a : $a-$c) : ($b<$c ? $c-$b : $b-$c);
    echo '$x ='.$x;
?>
注意,第五行的赋值操作会等待三元运算符执行完后才会执行。

运行结果如下:

$x =2

嵌套使用的三元运算符虽然可以节省很多代码,但是可读性不太好,日后代码维护起来也很不方便,所以像这种情况我们尽量使用 if else 语句来实现。