素材牛VIP会员
问个php三元运算符的基础问题
 10***19  分类:PHP代码  人气:1112  回帖:3  发布于6年前 收藏

问个php三元运算符的基础问题(求别喷)。
下面两个语句分别什么意思?

$_GET['a'] ?? 1;
$b ?: 2;
 标签:php

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv3 码奴
yi***14 Linux系统工程师 6年前#1

你这是PHP7的语法
$_GET['a'] ?? 1; = $_GET['a']?$_GET['a']:1;
$b ?:2 = $b?$b:2;

简洁很多

Lv7 码师
ad***cn CEO 6年前#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

Lv2 入门
Br***23 产品经理 6年前#3

$_GET['a'] ?? 1;
是php7写法
if(isset($_GET['a'])){
$_GET['a']
}
else{
1
}

$b ?: 2;
if($b){
}else{
2;
}

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取