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
session 的生命周期是多长
Oct 09 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
dedecms集成财付通支付接口
Dec 28 PHP
php验证码生成代码
Nov 11 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 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版本实现代码
2012/09/15 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
ES6中参数的默认值语法介绍
2017/05/03 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
JS定义函数的几种常用方法小结
2019/05/23 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
python爬虫常用的模块分析
2014/08/29 Python
Python中对列表排序实例
2015/01/04 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
基于Python List的赋值方法
2018/06/23 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
NFL官方在线商店:NFLShop
2020/07/29 全球购物
小学安全教育材料
2014/02/17 职场文书
捐赠仪式主持词
2014/03/19 职场文书
《悯农》教学反思
2014/04/28 职场文书
小学安全教育主题班会
2015/08/12 职场文书
导游词之唐山景点
2019/12/18 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
golang定时器
2022/04/14 Golang