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

yipeiwu_com6年前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'

相关文章

php正则删除html代码中class样式属性的方法 原创

本文实例讲述了php正则删除html代码中class样式属性的方法。分享给大家供大家参考,具体如下: 一、问题: 有如下代码: <div class="jb51"><...

PHP常用函数总结(180多个)

PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999)...

php生成txt文件实例代码介绍

这是一个朋友过来的 php 生成 txt 文件代码,这只是一个实例,需要我来给他生成多个 txt 文件实例的,但我觉得他这个代码有点意思,所以就分享上来了。 先说下这个 php 生成 t...

PHP小技巧之函数重载

1.可以使用func_get_args()和func_num_args()这两个函数实现函数的重载!! PHP代码: 复制代码 代码如下:function rewrite() {&nbs...

php读取图片内容并输出到浏览器的实现代码

代码很简单,网上都能找到,但在我机子上就是显示不出来,显示出的一直是这个php文件路径, 费了点时间才搞定,原来是我的<?php这个标签前面有多的空格,删掉就ok了,细节问题,粗心...