$x = array ( " a " => " red " , " b " => " green " ) ; $y = array ( " c " => " blue " , " d " => " yellow " ) ; $z = $x + $y ; // $x 和 $y 数组合并 var_dump ( $z ) ; var_dump ( $x == $y ) ; var_dump ( $x === $y ) ; var_dump ( $x != $y ) ; var_dump ( $x <> $y ) ; var_dump ( $x !== $y ) ;
尝试一下 »

三元运算符

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

(expr1) ? (expr2) : (expr3)

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

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

以下实例中通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody:

// 普通写法 $username = isset ( $_GET [ ' user ' ] ) ? $_GET [ ' user ' ] : ' nobody ' ; echo $username , PHP_EOL ; // PHP 5.3+ 版本写法 $username = $_GET [ ' user ' ] ?: ' nobody ' ; echo $username , PHP_EOL ;

注意: PHP_EOL 是一个换行符,兼容更大平台。

在 PHP7+ 版本多了一个 NULL 合并运算符 ?? ,实例如下:

// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值 $username = $_GET [ ' user ' ] ?? ' nobody ' ; // 类似的三元运算符 $username = isset ( $_GET [ ' user ' ] ) ? $_GET [ ' user ' ] : ' nobody ' ;

组合比较符(PHP7+)

PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=> 。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。

语法格式如下:

$c = $a <=> $b;

解析如下:

如果 $a > $b , 则 $c 的值为 1
  • 如果 $a == $b , 则 $c 的值为 0
  • 如果 $a < $b , 则 $c 的值为 -1
  • 实例如下:

    // 整型 echo 1 <=> 1 ; // 0 echo 1 <=> 2 ; // -1 echo 2 <=> 1 ; // 1 // 浮点型 echo 1 .5 <=> 1 .5 ; // 0 echo 1 .5 <=> 2 .5 ; // -1 echo 2 .5 <=> 1 .5 ; // 1 // 字符串 echo " a " <=> " a " ; // 0 echo " a " <=> " b " ; // -1 echo " b " <=> " a " ; // 1

    运算符优先级

    下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

    说明 :左 = 从左到右,右 = 从右到左。

    var_dump ( $c ) ; // 这里的 $c 为 int 值3,而不是 boolean 值 true $d = $a || $b ; var_dump ( $d ) ; // 这里的 $d 就是 boolean 值 true

    以上实例输出结果为:

    int(3) bool(true)

    括号的使用

    我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。

    // 括号优先运算 $a = 1 ; $b = 2 ; $c = 3 ; $d = $a + $b * $c ; echo $d ; echo " \n " ; $e = ( $a + $b ) * $c ; // 使用括号 echo $e ; echo " \n " ;

    以上实例输出结果为:

    5===5 // 返回 true 5==="5" // 返回 false
    tianqixin