php one_liner如果与javascript相比

clo*_*986 3 javascript php

我最近在javascript中编写了很多程序,我试图在PHP中使用一些简写.

请考虑以下声明:

$value = 1;

return $value == 1 ?
    'a' : $value == 2 ? 'b' : 'c';
Run Code Online (Sandbox Code Playgroud)

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

ish*_*egg 9

在PHP中,三元运算符是左关联的(或者来自手册,稍微不那么清晰).

这是因为从左到右评估三元表达式

在Javascript中,三元运算符是右关联的.

注意:条件运算符是右关联的

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

($value == 1 ?
    'a' : $value == 2) ? 'b' : 'c';
Run Code Online (Sandbox Code Playgroud)

在Javascript中,它执行如下:

value == 1 ?
    'a' : (value == 2 ? 'b' : 'c');
Run Code Online (Sandbox Code Playgroud)

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

echo $value == 1 ?
    'a' : ($value == 2 ? 'b' : 'c');
Run Code Online (Sandbox Code Playgroud)

这是(其中一个?)嵌套三元运算符是个坏主意的原因.他们不可读,容易犯这些错误!