网络人 > PHP技术 > php7 新发现之三元运算 ??与?:的区别

php7 新发现之三元运算 ??与?:的区别

三元运算是我个人比较喜欢写的一种方式,书写简单,可读性强。PHP7增加了三元运算新的写法,让我们的语法更简洁。

先看一下我以前是这样写的:

<?php
//正常写法
if(isset($_GET['user'])){
    $user=$_GET['user'];
}else{
    $user='Guest';
}

//使用三元运算简写成
$user=isset($_GET['user'])?$_GET['user']:'Guest';

PHP7到来了,我们可以这样写了:

<?php

//php7的写法
$user=$_GET['user']??'Guest';//等同于 $user=isset($_GET['user'])?$_GET['user']:'Guest';

使用两个问号(??)替代isset。

表示如果$_GET['user']非空,则$user = $_GET['user'],

如果$_GET['user']为空,则 $user = ‘Guest’;

<?php

echo '1、';
echo $a ?? $b ?? $c ?? '$a、$b、$c都不存在'; //输出$a、$b、$c都不存在
echo PHP_EOL; //换个行
echo '2、';
$a = '$a存在';
echo $a ?? $bb ?? $c ?? '$a、$b、$c都不存在'; //输出$a存在
echo PHP_EOL; //换个行
echo '3、';
unset($a);
$b = '$b存在';
echo $a ?? $b ?? $c ?? '$a、$b、$c都不存在'; //输出$b存在
echo PHP_EOL; //换个行
echo '4、';
unset($b);
$c = '$c存在';
echo $a ?? $b ?? $c ?? '$a、$b、$c都不存在'; //输出$c存在
echo PHP_EOL; //换个行

/*------重点在这里哦-------------*/
$a = '$a存在';
$b = '$b存在';
$c = '$c存在';
echo '5、';
echo $a ?? $b ?? $c ?? '$a、$b、$c都不存在'; //输出$a存在
/*相当于
if(isset($a)){
    echo $a;
}elseif(isset($b)){
    echo $b;  
}elseif(isset($c)){
    echo $c;  
}else{
    echo '$a、$b、$c都不存在';
}
*/

 

??可以使用很多组,对应elseif哦,这样我们可以节约很多代码。。。我好喜欢的样子。。。

 

php三元运算符?:的简写形式可用于PHP5.3+

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

举个栗子:

<?php
$a='成功了';
echo $a?:'失败了';//输出成功了

$a='';
echo $a?:'失败了';//输出失败了


$a=true;
echo $a?:'失败了';//输出 1

$a=0;
echo $a?:'失败了';//输出 失败了

 

 

除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:http://www.neter8.com/php/55.html

«上一篇:自PHP5.4起可以使用短数组定义语法,用[]替代array()

《php7 新发现之三元运算 ??与?:的区别》的网友评论(0)

感谢打赏!