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 使用post,get的一种简洁方式
Apr 25 PHP
PHP中读写文件实现代码
Oct 20 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
Zend Framework分页类用法详解
Mar 22 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 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
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
通用求职信范文模板分享
2013/12/27 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
团队精神口号
2014/06/06 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
学籍证明模板
2015/06/18 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers