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 相关文章推荐
基于mysql的论坛(6)
Oct 09 PHP
我的群发邮件程序
Oct 09 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
PHP之短标签开启设置
Jun 17 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
php实现图片等比例缩放代码
Jul 23 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 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
一个域名查询的程序
2006/10/09 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
python自定义异常实例详解
2017/07/11 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
Python读写docx文件的方法
2018/05/08 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python list转矩阵的实例讲解
2018/08/04 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
教师读书活动总结
2014/05/07 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
z-index不起作用
2021/03/31 HTML / CSS