php中的三元运算符使用说明


Posted in PHP onJuly 03, 2011

今天一个网友在群里发了个题目不难,但是可能会错

echo 
$a == 1 ? 'one' : 
$a == 2 ? 'two' : 
$a == 3 ? 'three' : 
$a == 4 ? 'foura' : 'other'; 
echo "\n";

输出结果是:

<BR>

结果是:four

一开始想不明白,按照我的理解,应该是这样的逻辑:
echo ($a == 1 ? 'one' :
( $a == 2 ? 'two' :
( $a == 3 ? 'three' :
($a == 4 ? 'four' : 'other'))));
输出为:two

后来在kevinG(qq:48474)的指教下,参看php手册,终于明白了php的三元符的解释是从左到右的,
<!--?php
// 乍看起来下面的输出是 'true'
echo (true?'true':false?'t':'f');

// 然而,上面语句的实际输出是't',因为三元运算符是从左往右计算的

// 下面是与上面等价的语句,但更清晰
echo ((true ? 'true' : 'false') ? 't' : 'f');

所以上面的可以这样解释:
echo (
((($a == 1 ? 'one' :
$a == 2) ? 'two' :
$a == 3 )? 'three' :
$a == 4 )? 'four' : 'other');

其实这个涉及到类型转换:
$a==1=>false=>$a==2?true=>'two'=true=>'three'=true=>'four'

PHP 相关文章推荐
PHP COOKIE设置为浏览器进程
Jun 21 PHP
php debug 安装技巧
Apr 30 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 #PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 #PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 #PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 #PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 #PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 #PHP
php编程实现获取excel文档内容的代码实例
Jun 28 #PHP
You might like
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python 读写文件的操作代码
2018/09/20 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
军训口号
2014/06/13 职场文书
少先队活动总结
2014/08/29 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
教师群众路线心得体会
2014/11/04 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
管辖权异议上诉状
2015/05/23 职场文书
推广普通话主题班会
2015/08/17 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Python 图片添加美颜效果
2022/04/28 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python