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错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
Destoon实现多表查询示例
Aug 21 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 PHP
PHP实现Session入库/存入redis的方法
May 04 PHP
PHP实现微信退款功能
Oct 02 PHP
PHP defined()函数的使用图文详解
Jul 20 PHP
tp5.1 实现setInc字段自动加1
Oct 18 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
php目录操作实例代码
2014/02/21 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
python调用百度REST API实现语音识别
2018/08/30 Python
Django Rest framework频率原理与限制
2019/07/26 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python开头的coding设置方法
2019/08/08 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
Python正则表达式学习小例子
2020/03/03 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
关于Java String的一道面试题
2013/09/29 面试题
心得体会开头
2014/01/01 职场文书
专家推荐信范文
2015/03/26 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js