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脚本数据库功能详解(上)
Oct 09 PHP
PHP中ADODB类详解
Mar 25 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
PHP时间和日期函数详解
May 08 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
PHP实现百度人脸识别
2019/05/06 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
使用js实现数据格式化
2014/12/03 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
临床医学应届生求职信
2013/11/06 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
个人先进事迹总结
2015/02/26 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
nginx服务器的下载安装与使用详解
2021/08/02 Servers
MySQL去除密码登录告警的方法
2022/04/20 MySQL