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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
如何使用PHP中的字符串函数
Nov 24 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
Php-Redis安装测试笔记
Mar 05 PHP
php多线程并发实现方法
Sep 30 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
php输出反斜杠的实例方法
Sep 19 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 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
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
python计算圆周率pi的方法
2015/07/11 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python阶乘求和的代码详解
2020/02/14 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
PHP面试题集
2016/12/18 面试题
资产评估专业大学生求职信
2013/09/29 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
导师就业推荐信范文
2014/05/22 职场文书
住房租房协议书
2014/08/20 职场文书
校车司机安全责任书
2015/05/11 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL