三元运算符和Null合并运算符在php中的区别

三元运算符

三元运算符用于将if语句替换为一个语句。

语法

(condition) ? expression1 : expression2;

等价表达

if(condition) {
   return expression1;
}
else {
   return expression2;
}

如果condition为true,则返回expression1的结果,否则返回expression2的结果。条件或表达式中不允许void。

空合并运算符

如果变量为null,则使用null合并运算符提供不为null的值。

语法

(variable) ?? expression;

等价表达

if(isset(variable)) {
   return variable;
}
else {
   return expression;
}

如果变量为null,则返回表达式的结果。

示例

<!DOCTYPE html>
<html>
<head>
   <title>PHP Example</title>
</head>
<body>
   <?php
      //获取$_GET ['user']的值并返回“未传递”
      //如果没有通过用户名
      $username = $_GET['username'] ?? 'not passed';
      print($username);
      print("<br/>");
      //使用三元运算符的等效代码
      $username = isset($_GET['username']) ? $_GET['username'] : 'not passed';
      print($username);
      print("<br/>");
   ?>
</body>
</html>

输出结果

not passed
not passed