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 会话(session 时间设定)使用入门代码
Jun 05 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
php 中英文语言转换类代码
Aug 11 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP环形链表实现方法示例
Sep 15 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
对laravel in 查询的使用方法详解
Oct 09 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
php在线打包程序源码
2008/07/27 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
js jquery数组介绍
2012/07/15 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
python通过post提交数据的方法
2015/05/06 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python基础教程之while循环
2019/08/14 Python
Python双链表原理与实现方法详解
2020/02/22 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
小浪底导游词
2015/02/12 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS