问个php三元运算符的基础问题(求别喷)。下面两个语句分别什么意思?
$_GET['a'] ?? 1; $b ?: 2;
你这是PHP7的语法$_GET['a'] ?? 1; = $_GET['a']?$_GET['a']:1;$b ?:2 = $b?$b:2;
PHP7
$_GET['a'] ?? 1;
$_GET['a']?$_GET['a']:1;
$b ?:2
$b?$b:2
简洁很多
第一种写法是php7新增的NULL 合并运算符$_GET['a'] ?? 1 等同于 isset($_GET['a']) ? $_GET['a'] : 1,就是判断$_GET['a']这个变量是否存在,存在就为当前这个变量,否则就为1 第二种写法是php5.3引入的一种简洁的三元运算符 $_GET['a'] ?: 1 等同于 $_GET['a'] ? $_GET['a'] : 1, 也就是说判断$_GET['a']这个变量是否为true,如果为true则返回$_GET['a'],即为true,否则返回1
第一种写法是php7新增的NULL 合并运算符$_GET['a'] ?? 1 等同于 isset($_GET['a']) ? $_GET['a'] : 1,就是判断$_GET['a']这个变量是否存在,存在就为当前这个变量,否则就为1
php7
$_GET['a'] ?? 1
isset($_GET['a']) ? $_GET['a'] : 1
$_GET['a']
1
第二种写法是php5.3引入的一种简洁的三元运算符 $_GET['a'] ?: 1 等同于 $_GET['a'] ? $_GET['a'] : 1, 也就是说判断$_GET['a']这个变量是否为true,如果为true则返回$_GET['a'],即为true,否则返回1
php5.3
$_GET['a'] ?: 1
$_GET['a'] ? $_GET['a'] : 1
true
$_GET['a'] ?? 1; 是php7写法if(isset($_GET['a'])){$_GET['a']}else{1}
$b ?: 2;if($b){}else{2;}