PHP三元运算符的结合性介绍


Posted in PHP onJanuary 10, 2012

先看一个三元运算式子:

<?php 
$a=1;$b=2;$c=3;$d=4; 
echo $a<$b?'xx':$a<$c?'yy':$a<$d?'zz':'oo'; 
?>

一般按照其它语言(比如C或Java)的规则, 以上代码的运算逻辑是:
$a<$b => true => 'xx' ==> 结束

那么最后得到的结果就是'xx', 而再往后的运算都会被无视.
然而令人吃惊的是, php运算以上代码最后得到的结果却是'zz'...我擦, 什么情况, 这不坑爹么...
老规矩, 只好求教谷歌酱, 结果被告知php的三元运算竟然是向左结合的...于是豁然开窍.
我给上面的代码加上两个括号:
<?php 
$a=1;$b=2;$c=3;$d=4; 
echo (($a<$b?'xx':$a<$c)?'yy':$a<$d)?'zz':'oo'; 
?>

一目了然了吧, 这才是php的运算逻辑:
$a<$b => true => 'xx' => true => 'yy' => true => 'zz' => 结束

这其中涉及到两个类型转化的过程, 即 'xx' => true 和 'xx' => true.
不知这样的过程是否是蛋疼, 确实是让人很难理解...
最后再次回到上面的代码, 将其变为像C一样的向右结合吧:
<?php 
$a=1;$b=2;$c=3;$d=4; 
echo $a<$b?'xx':($a<$c?'yy':($a<$d?'zz':'oo')); 
// 括号换下位置就行了, php里括号省不得 
?>
PHP 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
随机广告显示(PHP函数)
Oct 09 PHP
打造计数器DIY三步曲(中)
Oct 09 PHP
PHP 循环列出目录内容的函数代码
May 26 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP序列化操作方法分析
Sep 28 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 PHP
PHP之header函数详解
Mar 02 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 #PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 #PHP
PHP的SQL注入过程分析
Jan 06 #PHP
超级实用的7个PHP代码片段分享
Jan 05 #PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 #PHP
选择PHP作为网站开发语言的原因分享
Jan 03 #PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 #PHP
You might like
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
javascript 写类方式之十
2009/07/05 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
nodejs教程之入门
2014/11/21 NodeJs
node.js开机自启动脚本文件
2014/12/24 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python requests库用法实例详解
2018/08/14 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
校本教研工作制度
2014/01/22 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
颐和园英文导游词
2015/01/30 职场文书
大二学年个人总结
2015/03/03 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis