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 相关文章推荐
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
php读取xml实例代码
Jan 28 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
Jul 15 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
ThinkPHP静态缓存简单配置和使用方法详解
Mar 23 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 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
用PHP生成html分页列表的代码
2007/03/18 PHP
解析php常用image图像函数集
2013/06/24 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python虚拟环境完美部署教程
2019/08/06 Python
python+django+rest框架配置创建方法
2019/08/31 Python
Python2与Python3的区别点整理
2019/12/12 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
秋季运动会加油稿200字
2014/01/11 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
车辆转让协议书
2014/04/15 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
Nginx配置之禁止指定IP访问
2022/05/02 Servers