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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
使用PHP函数scandir排除特定目录
Jun 12 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
PHP中类的自动加载的方法
Mar 17 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
PHP使用函数用法详解
Sep 30 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 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中数据类型转换的三种方式
2015/04/02 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python脚本调试工具安装过程
2021/01/11 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
计算机专业学生求职信分享
2013/12/15 职场文书
小班开学寄语
2014/04/04 职场文书
优秀员工推荐信
2014/05/10 职场文书
团队激励口号
2014/06/06 职场文书
代理人委托书
2014/08/01 职场文书
连锁超市项目计划书
2014/09/15 职场文书
学校会议通知范文
2015/04/15 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis