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制作静态网站的模板框架(三)
Oct 09 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
PHP制作万年历
Jan 07 PHP
php模拟post提交数据的方法
Feb 12 PHP
form自动提交实例讲解
Jul 10 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 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如何编写易读的代码
2007/07/10 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP children()函数讲解
2019/02/03 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Sanic框架配置操作分析
2018/07/17 Python
学习python可以干什么
2019/02/26 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
优秀的毕业生的自我评价
2013/12/12 职场文书
校园安全教育广播稿
2014/02/17 职场文书
文秘求职信范文
2014/04/10 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
初中教师个人总结
2015/02/10 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers