我最近在javascript中编写了很多程序,我试图在PHP中使用一些简写.
请考虑以下声明:
$value = 1;
return $value == 1 ?
'a' : $value == 2 ? 'b' : 'c';
Run Code Online (Sandbox Code Playgroud)
谁能解释一下为什么这会'a'在jQuery和'b'php中返回?
在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)
这是(其中一个?)嵌套三元运算符是个坏主意的原因.他们不可读,容易犯这些错误!
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |