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的FTP学习(二)
Oct 09 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
浅析php数据类型转换
Jan 09 PHP
php格式化日期实例分析
Nov 12 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
php提取微信账单的有效信息
Oct 01 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 PHP
PHP常用header头定义代码示例汇总
Aug 29 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之生成GIF动画的实现方法
2013/06/07 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
js实现开关灯效果
2020/03/30 Javascript
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
高中语文教学反思
2014/01/16 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
学生安全责任书
2014/04/15 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
2014年调度员工作总结
2014/11/19 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
初三数学教学反思
2016/02/17 职场文书
python requests模块的使用示例
2021/04/07 Python
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js