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 相关文章推荐
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
php实现的短网址算法分享
Jun 20 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
php中的登陆login实例代码
Jun 20 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
深入Nginx + PHP 缓存详解
2013/07/11 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
Python对excel的基本操作方法
2021/02/18 Python
文明礼仪小标兵事迹
2014/01/12 职场文书
学习十八大标语
2014/10/09 职场文书
合作合同协议书范本
2015/01/27 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
原告代理词范文
2015/05/25 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
Python中如何处理常见报错
2022/01/18 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript