php 三元运算符(?:)、合并运算符区别(??)

阅读数: 794 2019年01月03日

注意:?? 必须 php7+ 版本才可以使用


举例:

<?php
$a = 1;
$b = 2;
$c = 3;

$d = $a ?: $b; 等同于 $d = $a ? $a : $b; //如果 $a 存在,就返回 $a,否则返回 $b;

$d = $a ?? $b; 等同于 $d = isset($a) ? $a : $b; //如果 $a 变量已经设置,就返回 $a,否则就返回 $b;


关键是在 $a 的判断有区别,三元运算符判断的是 $a 是否有值 = !empty()

合并运算符是判断 $a 是否设置了变量 = isset()

大部分情况,2个运算符结果会一样。

此情况输出一致:

<?php

$a = 1;
$b = 2;
$c = 3;

$d = $a ? $a : $b;
var_export($d);

echo PHP_EOL;

$d = $a ?? $b;
var_export($d);

<<<EDO
1
1
EDO;


所以以下情况,结果就不一样:

<?php 
$a = 0;
$b = 2;
$c = 3;

$d = $a ? $a : $b;
var_export($d);

echo PHP_EOL;

$d = $a ?? $b;
var_export($d);

<<<EDO
2
0
EDO;


phpriji.cn | 网站地图 | 沪ICP备17015433号-1