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 相关文章推荐
php的字符串用法小结
Jun 08 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
php学习笔记之基础知识
Nov 08 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
PHP进程同步代码实例
Feb 12 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
php进程间通讯实例分析
Jul 11 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python中functools模块的常用函数解析
2016/06/30 Python
Python 列表理解及使用方法
2017/10/27 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
python从PDF中提取数据的示例
2020/10/30 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
实习自荐信
2013/10/13 职场文书
考试没考好检讨书
2014/01/31 职场文书
求职简历自我评价范例
2014/03/12 职场文书
2016年小学生寒假总结
2015/10/10 职场文书