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 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php画图实例
2014/11/05 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
深入浅析python继承问题
2016/05/29 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
社团文化节邀请函
2014/01/10 职场文书
二年级评语大全
2014/04/23 职场文书
2014离婚协议书范文
2014/09/10 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
物业公司管理制度
2015/08/05 职场文书
德能勤绩工作总结
2015/08/11 职场文书
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL