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 相关文章推荐
简单的页面缓冲技术
Oct 09 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
php计算十二星座的函数代码
Aug 21 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
php数组查找函数总结
Nov 18 PHP
php中异常处理方法小结
Jan 09 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP基于GD库的图像处理方法小结
Sep 27 PHP
PHP XML和数组互相转换详解
Oct 26 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
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
python机器学习库常用汇总
2017/11/15 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
计算机科学与技术应届生求职信
2013/11/07 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
文体活动实施方案
2014/03/27 职场文书
初三学习计划书范文
2014/04/30 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
2014年学前班工作总结
2014/12/08 职场文书
三潭印月的导游词
2015/02/12 职场文书
2015年中个人总结范文
2015/03/10 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
亮剑观后感600字
2015/06/05 职场文书
企业法人任命书
2015/09/21 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
SQL Server中搜索特定的对象
2022/05/25 SQL Server