三元运算符

表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

<?php
// 三元运算符的例子
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];// 以上等同于以下的  if/else 语句
if (empty($_POST['action'])) {$action = 'default';
} else {$action = $_POST['action'];
}
?>

容易出错的情况:

<?php
// 乍看起来下面的输出是 'true'
echo (true ? 'true' : false ? 't' : 'f');
// 然而,上面语句的实际输出是't',因为三元运算符是从左往右计算的
// 下面是与上面等价的语句,但更清晰
echo ((true ? 'true' : 'false') ? 't' : 'f');
?>

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

<?php
echo 0 ?: 1 ?: 2 ?: 3; //1
echo 1 ?: 0 ?: 3 ?: 2; //1
echo 2 ?: 1 ?: 0 ?: 3; //2
echo 3 ?: 2 ?: 1 ?: 0; //3echo 0 ?: 1 ?: 2 ?: 3; //1
echo 0 ?: 0 ?: 2 ?: 3; //2
echo 0 ?: 0 ?: 0 ?: 3; //3
?>

扩展:NULL 合并运算符

当 expr1 为 NULL,表达式 (expr1) ?? (expr2) 等同于 expr2,否则为 expr1。
尤其要注意,当不存在左侧的值时,此运算符也和 isset() 一样不会产生警告。 对于 array 键尤其有用。

PHP 7 开始存在 “??” (NULL 合并)运算符。


<?php
// NULL 合并运算符的例子
$action = $_POST['action'] ?? 'default';// 以上例子等同于于以下 if/else 语句
if (isset($_POST['action'])) {$action = $_POST['action'];
} else {$action = 'default';
}
?>

NULL 合并运算符支持简单的嵌套:


<?php$foo = null;
$bar = null;
$baz = 1;
$qux = 2;echo $foo ?? $bar ?? $baz ?? $qux; // 输出 1
?>

php 三元运算?:和合并运算符??相关推荐

  1. day1简述、输入输出、运算符、条件语句、文件读写、三元运算

    文章目录 1.Python 简述 2.变量 3.输入输出 4.数据运算 5. 条件语句 if..else.elif 循环语句 for.while 6.文件读写 7.三元运算 1.Python 简述   ...

  2. php 三元运算符 为空,PHP中三元运算符和Null合并运算符的简单比较

    在PHP中,三元运算符(?:)和Null合并运算符(??)的用法相似,那么它们之间有什么差异?下面本篇文章就来带大家了解一下三元运算符和Null合并运算符,希望对大家有所帮助. 三元运算符 三元运算符 ...

  3. JAVA语言运算符(算数运算符、赋值运算符、比较运算符、逻辑运算符、三元运算)

    运算符 JAVA语言中将运算符分为:算数运算符.赋值运算符.比较运算符.逻辑运算符.三元运算符. 算数运算符:算数运算符是对数字进行一系列的加减乘除等的计算,常见的算数运算符如: public cla ...

  4. java中数字作为布尔值_day50 java Script 数字和字符串 布尔值和数组 运算符 条件判断和三元运算...

    上节回顾: day501.前情回顾 CSS属性: float浮动的规则1. 浮动规则: 浮动只控制自己 如果前面的标签也是浮动的,就挨着放 如果前面的标签不浮动,则下方摆放 如果把块级标签设置成浮动, ...

  5. PHP三元运算符vs空合并运算符

    本文翻译自:PHP ternary operator vs null coalescing operator Can someone explain the differences between t ...

  6. php 三元运算符 为空,PHP三元运算符vs空合并运算符

    小编典典 当您的第一个参数为null时,它们基本相同,不同之处在于,E_NOTICE当您有未定义的变量时,null合并不会输出.在PHP7.0迁移的文档有这样一段话: 对于需要将三元数与isset() ...

  7. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  8. thinkphp5模板之使用运算符和三元运算

    博客参考thinkphp5.0完全开发手册 使用运算符 运算符 使用示例 + {$a+$b} - {$a-$b} * {a∗a*a∗b} / {$a/$b} % {$a%$b} ++ {$a++} - ...

  9. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算...

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

最新文章

  1. asp.net mvc4三层架构搭建
  2. 使用增量备份修复DG中的GAP
  3. 干货—MySQL常见的面试题+索引原理分析!
  4. Mac Appium 安装
  5. Python打包exe文件并换图标【最强版教程】
  6. pandas中Category的应用
  7. php ios表情包,[iOS] 自定义表情包
  8. spec文件知识整理
  9. 浅识Flutter 基本组件之showDatePicker方法
  10. 服务器怎么买,腾讯云服务器购买三种流程介绍
  11. 《基于微信小程序的美食推荐系统》硕士论文
  12. proteus练习(1) 流水灯的实现
  13. 告诉你如何同时拿到腾讯两个部门的offer?
  14. webpack多页面打包
  15. Spring Boot、Spring MVC、Spring:它们有什么区别?
  16. 雷赛服务器信号er020,雷赛_数字步进电机与驱动器_DM2C-RS556型号
  17. 压力测试常见性能指标
  18. mysql注入之盲注语句汇总
  19. 变更管理最佳实践的几种方法
  20. Intel Xeon(Ice Lake) Platinum 8369B阿里云CPU处理器

热门文章

  1. 什么蓝牙耳机佩戴舒服音质好?国庆出游佩戴的蓝牙耳机
  2. maya中使用python获取所选物体的材质和贴图
  3. mysql中的存储引擎
  4. 在pycharm中更新pip失败
  5. Python制作抖音同款含褶皱面料图
  6. C语言测试。自己实现scandir 函数
  7. phpemspro模拟考试无试题_在线考试系统PHPEMS小白安装教程
  8. 冒泡排序法c语言实验报告,微机原理实验报告-冒泡排序
  9. /toplan/phpsms#寄生代理器发送短信
  10. python翻转课堂_翻转课堂都有哪些缺点?