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 多线程上下文中安全写文件实现代码
Dec 28 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
php 发送带附件邮件示例
Jan 23 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
php微信开发之关注事件
Jun 14 PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 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
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
PHP 实现缩略图
2021/03/09 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
详细解读Python中的__init__()方法
2015/05/02 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
2014年加油站工作总结
2014/12/04 职场文书
六一儿童节开幕词
2015/01/29 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
升学宴祝酒词
2015/08/11 职场文书
旅游安全责任协议书
2016/03/22 职场文书
Python合并pdf文件的工具
2021/07/01 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
Python如何使用循环结构和分支结构
2022/04/13 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python