php中的三元运算符使用说明


今天一个网友在群里发了个题目不难,但是可能会错

复制代码 代码如下:

echo
$a == 1 ? 'one' :
$a == 2 ? 'two' :
$a == 3 ? 'three' :
$a == 4 ? 'foura' : 'other';
echo "\n";

输出结果是:

<BR>

结果是:four

一开始想不明白,按照我的理解,应该是这样的逻辑:
echo ($a == 1 ? 'one' :
( $a == 2 ? 'two' :
( $a == 3 ? 'three' :
($a == 4 ? 'four' : 'other'))));
输出为:two

后来在kevinG(qq:48474)的指教下,参看php手册,终于明白了php的三元符的解释是从左到右的,
<!--?php
// 乍看起来下面的输出是 'true'
echo (true?'true':false?'t':'f');

// 然而,上面语句的实际输出是't',因为三元运算符是从左往右计算的

// 下面是与上面等价的语句,但更清晰
echo ((true ? 'true' : 'false') ? 't' : 'f');

所以上面的可以这样解释:
echo (
((($a == 1 ? 'one' :
$a == 2) ? 'two' :
$a == 3 )? 'three' :
$a == 4 )? 'four' : 'other');

其实这个涉及到类型转换:
$a==1=>false=>$a==2?true=>'two'=true=>'three'=true=>'four'



相关阅读:
建立开源数据库的另一个方法
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Win 2003开关机优化技巧两则
Step1数据系统技术(4.采用服务器端文件缓存)
VBS教程:方法-DeleteFolder 方法
CSS隐藏网页文字的几种常用方法
用jquery实现下拉菜单效果的代码
让网页上的字符掉下来
php设计模式 Template (模板模式)
一个多次搜索+多次传值的解决方案
jQuery 加上最后自己的验证
学习ExtJS Panel常用方法
不要忘了为你的JavaScript命名
javascript实例 “飞舞”特效
快速导航

Copyright © 2016 phpStudy |