加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php one_liner如果与javascript相比

发布时间:2020-12-13 21:59:09 所属栏目:PHP教程 来源:网络整理
导读:我最近在 javascript中编写了很多程序,我试图在 PHP中使用一些简写. 请考虑以下声明: $value = 1;return $value == 1 ? 'a' : $value == 2 ? 'b' : 'c'; 谁能解释一下为什么这会在jQuery中返回’a’而在php中返回’b’? 解决方法 在PHP中,三元运算符是 lef
我最近在 javascript中编写了很多程序,我试图在 PHP中使用一些简写.

请考虑以下声明:

$value = 1;

return $value == 1 ?
    'a' : $value == 2 ? 'b' : 'c';

谁能解释一下为什么这会在jQuery中返回’a’而在php中返回’b’?

解决方法

在PHP中,三元运算符是 left-associative(或者从 the manual开始,稍微不那么明确).

this is because ternary expressions are evaluated from left to right

在Javascript中,三元运算符是right-associative.

note: the conditional operator is right associative

因此,在PHP中,您的代码执行如下:

($value == 1 ?
    'a' : $value == 2) ? 'b' : 'c';

在Javascript中,它执行如下:

value == 1 ?
    'a' : (value == 2 ? 'b' : 'c');

因此,要获得相同的结果,您需要告诉其中一个像另一个一样:

echo $value == 1 ?
    'a' : ($value == 2 ? 'b' : 'c');

这是(其中一个?)嵌套三元运算符是个坏主意的原因. They’re not readable而且容易出现这类错误!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读