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 相关文章推荐
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
PHP 类相关函数的使用详解
May 10 PHP
关于svn冲突的解决方法
Jun 21 PHP
访问编码后的中文URL返回404错误的解决方法
Aug 20 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
php数值计算num类简单操作示例
May 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防止跨域提交表单
2013/11/01 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Python笔记之代理模式
2019/11/20 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
活动策划求职信模板
2014/04/21 职场文书
三问三解心得体会
2014/09/05 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers