PHP 三目运算符问题

查看:163
本文介绍了PHP 三目运算符问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题


    $a = 1;
    echo $a == 1 ? 2 : $a == 1 ? 3 : 4 ;

这段代码的输出为什么是 3 呢? 同样的三目运算符级联,用 JavaScript 写结果就是 2...

解决方案

哎,这个是PHP的三目运算符比较特殊:

  • PHP的?:是从左到右结合的: $a == 1 ? 2 : $a == 1 ? 3 : 4 等价于 ($a == 1 ? 2 : $a == 1) ? 3 : 4

  • JavaScript的?:是从右到左结合的: $a == 1 ? 2 : $a == 1 ? 3 : 4 等价于 $a == 1 ? 2 : ($a == 1 ? 3 : 4)

所以呢,多加点括号吧。反正多加括号一般不会有什么影响。

参考:

  1. PHP 运算符优先级

  2. 运算符优先级 - JavaScript - MDN

看看常见语言的?:三目运算符的结合顺序:(就PHP奇葩)

  • C: 从右到左

  • C++: 从右到左

  • Java: 从右到左

  • PHP: 从左到右

  • JavaScript: 从右到左

  • C#: 从右到左

  • Object-C: 从右到左

  • Swift: 从右到左

这篇关于PHP 三目运算符问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆