PHP三元运算符的结合性介绍

 更新时间:2012年01月10日 01:28:52   作者:  
PHP三元运算符的结合性介绍,需要的朋友可以参考下。
先看一个三元运算式子:

复制代码 代码如下:

<?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 fsockopen伪造post与get方法的详解

    php fsockopen伪造post与get方法的详解

    本篇文章是对php中fsockopen伪造post与get的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php array_merge函数使用需要注意的一个问题

    php array_merge函数使用需要注意的一个问题

    这篇文章主要介绍了php array_merge函数使用需要注意的一个问题,本文讲解array_merge合并数组时不会合并数字键名的问题,大家使用时需要注意,需要的朋友可以参考下
    2015-03-03
  • php通过array_merge()函数合并关联和非关联数组的方法

    php通过array_merge()函数合并关联和非关联数组的方法

    这篇文章主要介绍了php通过array_merge()函数合并关联和非关联数组的方法,涉及php中array_merge()函数操作数组合并的技巧,需要的朋友可以参考下
    2015-03-03
  • 解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示

    解决PHP程序运行时:Fatal error: Maximum execution time of 30

    最近做的程序中涉及到的循环比较多且处理的情况较复杂,在运行程序时出现执行超时提示如下:Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\AppServ\www\sum3\test.php on line 3通过在网上搜索,找到了解决方法和大家分享,下面来一起看看吧。
    2016-11-11
  • php+ajax实现图片文件上传功能实例

    php+ajax实现图片文件上传功能实例

    目前常用的异步文件上传功能有几种,比较多见的如使用iframe框架形式,ajax功能效果,以及flash+php功能,需要的朋友可以参考下
    2014-06-06
  • PHP设计模式之抽象工厂模式实例分析

    PHP设计模式之抽象工厂模式实例分析

    这篇文章主要介绍了PHP设计模式之抽象工厂模式,结合实例形式分析了php抽象工厂模式的概念、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-03-03
  • ucenter中词语过滤原理分析

    ucenter中词语过滤原理分析

    这篇文章主要介绍了ucenter中词语过滤原理,结合实例形式分析了ucenter中词语的相关sql字段定义与过滤功能的实现方法,涉及php正则替换及字符串与数组的相关操作技巧,需要的朋友可以参考下
    2016-07-07
  • php绘制一条弧线的方法

    php绘制一条弧线的方法

    这篇文章主要介绍了php绘制一条弧线的方法,主要涉及GD库中imagearc方法的使用技巧,需要的朋友可以参考下
    2015-01-01
  • ThinkPHP模板标签eq if 中区分0,null,false的方法

    ThinkPHP模板标签eq if 中区分0,null,false的方法

    下面小编就为大家带来一篇ThinkPHP模板标签eq if 中区分0,null,false的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • php生成图形验证码几种方法小结

    php生成图形验证码几种方法小结

    生成图形验证码需要使用php GD库来生成,如果你没开户GD库我们需要在php.ini文件找到extension=php_gd2.dll 去掉前面的;就行了,然后重启apache 或iis环境即可
    2013-08-08

最新评论