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 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
php检测url是否存在的方法
Apr 14 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
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
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
php英文单词统计器
2016/06/23 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
jQuery编写网页版2048小游戏
2017/01/06 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
Python中协程用法代码详解
2018/02/10 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
基于Python中的yield表达式介绍
2019/11/19 Python
Python绘图实现显示中文
2019/12/04 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
Java的五个基础面试题
2016/02/26 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
启动仪式策划方案
2014/06/14 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
小学校本教研总结
2015/08/13 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏