// (expr1)?(expr2):(expr3);
$a=1;
$b=2;
$c= $a==5 ? $a1=4 : $d=d;//如果$a条件成立就返回$a1否则就返回$d
echo $c;//输出d
//(expr1)?:(expr2);
//这个是php5.3开始才有的功能
$number = 100;
$msg = $number==0 ?: $d=d;//如果$number条件成立就返回$number否则就返回$d
echo $msg;//输出d
//(expr1)??(expr2);
//这个是php7开始才有的功能
//又叫空合并运算符,相当于 isset(expr1) ? expr1 : expr2;
//如果条件“isset(expr1)”成立,则执行语句“expr1”,否则执行“expr2”。
//链式:(expr1)?? (expr2) ?? (expr3);
/*******注意********/
//它只能判断是否为null,而0/false/空数组都认为有值的!
// 一般形式
$msg1 = $number ?? '未设置该变量';
echo $msg1;//'未设置该变量'
$number = 100;
$msg2 = $number ?? '未设置该变量';
echo $msg2;//100
// 链式
$msg3 = $number1 ?? $number2 ?? '未设置该变量';
echo $msg3;//未设置该变量 //没有赋值都是null,所以返回'未设置该变量'
$number1 = 100;//即使是0/false/空数组都认为有值的!
$msg3 = $number1 ?? $number2 ?? '未设置该变量';
echo $msg3;//100 //执行到第一步就得到结果,所以返回100