美文网首页
PHP三元运算符的运算顺序是反的

PHP三元运算符的运算顺序是反的

作者: 老4 | 来源:发表于2016-03-10 17:43 被阅读625次

最近在工作中写了一个比较长的三元运算表达式,但是结果始终是错误的,在网上搜了相关信息了解到,原来php的三元运算顺序是反的(相对于javascript),在此感谢师兄们的分享,本着传播文明的思想,在此整理分享,希望能帮助更多的人。

$type = 2;
echo $type == 1 ? "一" : $type == 2 ? "二"  : $type == 3 ? "三" : "四"; 

上面这个例子按照javascript运算规则应该输出“二”,而php输出的结果是“三”,因为php的三元运算顺序是从左到有,我们通过拆分法来分析下PHP的运算步骤:

  1. 第一步:$type == 1 ? "一" : $type == 2,运算结果是$type == 2,运算这步后表达式等价于
$type == 2 ? "二"  : $type == 3 ? "三" : "四"; 
  1. 第二步:$type == 2 ? "二" : $type == 3,运算结果是"二",运算这步后表达式等价于
"二"  ? "三" : "四"; 

因为“一”、“二”等字符串转成逻辑符号是true,所以最终结果是“三”

如果我们要让他从右往左运算,需要把表达式改成:

$type = 2;
echo $type == 1 ? "一" : ($type == 2 ? "二"  : ($type == 3 ? "三" : "四")); 

还记得小学数学里面的“先算括号再算乘除再算加减”吧,这里同样是先算括号。

  1. 第一步:($type == 3 ? "三" : "四")的运算结果是"四",运算这步后表达式等价于
echo $type == 1 ? "一" : ($type == 2 ? "二"  : "四"); 
  1. 第二步:($type == 2 ? "二" : "四")的运算结果是“二”,之后表达式等价于
echo $type == 1 ? "一" : "二"; 

最终运算结果就是输出“二”;

相关文章

  • 理解php中的?:与??

    三元运算符(?:) php 5.3 空合并运算符(??)php 7

  • 第5章 PHP中常用的运算符

    什么是运算符 PHP中的运算符有哪些?PHP运算符一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算...

  • php三元运算符简述

    php的三元运算符有几种写法: $arr = [1,2]; 1、?? 运算符(合并运算符) 此运算符是php7加...

  • PHP三元运算符的运算顺序是反的

    最近在工作中写了一个比较长的三元运算表达式,但是结果始终是错误的,在网上搜了相关信息了解到,原来php的三元运算顺...

  • 入门篇/Chapter 5

    运算符 运算符是告诉PHP做相关运算的标识符号。一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符...

  • Learning PHP Day1(运算符、数组)

    1. 运算符 PHP 中的运算符分为:算术运算符、递增/递减运算符、比较运算符、逻辑运算符、数组运算符、三元运算符...

  • 2019-07-23

    php支持以下类型的运算符。算术运算符,比较运算符,逻辑(或关系)运算符,赋值运算符有条件(或三元)运算符.

  • PHP学习笔记 - 入门篇(4)

    什么是运算符 PHP运算符一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错...

  • php运算符

    算数运算符 递增/递减运算符 比较运算符 逻辑运算符 三元运算符 组合比较符(PHP7+) 位运算符 运算符优先级

  • php学习笔记(二)

    PHP运算符一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符。...

网友评论

      本文标题:PHP三元运算符的运算顺序是反的

      本文链接:https://www.haomeiwen.com/subject/gcmtlttx.html