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 Google的translate API代码
Dec 10 PHP
php cookie 登录验证示例代码
Mar 16 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
php封装的mysqli类完整实例
Oct 18 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 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 单引号与双引号的区别
2009/11/24 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
Python中进程和线程的区别详解
2017/10/29 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
美国时尚女装在线:Missguided
2016/12/03 全球购物
新学期开学寄语
2014/01/18 职场文书
运动会广播稿400字
2014/01/25 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
求职信怎么写
2014/05/23 职场文书
小组口号大全
2014/06/09 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
建筑工地文明标语
2014/10/09 职场文书
员工家属慰问信
2015/03/24 职场文书
摘录式读书笔记
2015/07/01 职场文书
运动员入场前导词
2015/07/20 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
Python作用域和名称空间的详细介绍
2022/04/13 Python
nginx访问报403错误的几种情况详解
2022/07/23 Servers