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 判断常量,变量和函数是否存在
Apr 26 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
PHP的一个基础知识 表单提交
Jul 04 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
session 加入redis的实现代码
2016/07/15 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
学习ExtJS table布局
2009/10/08 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Python编写单元测试代码实例
2020/09/10 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
如何进行有效的自我评价
2013/09/27 职场文书
货代行业个人求职简历的自我评价
2013/10/22 职场文书
组织鉴定材料
2014/06/02 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
大国崛起英国观后感
2015/06/02 职场文书
夏洛特的网观后感
2015/06/15 职场文书
Python中for后接else的语法使用
2021/05/18 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python