最近我一直在编写JavaScript代码,现在我想在PHP中使用一些简写。
考虑以下语句:
$value = 1;
return $value == 1 ?
'a' : $value == 2 ? 'b' : 'c';
请问有人能解释一下为什么在jQuery中返回'a'
,而在php中返回'b'
吗?
最近我一直在编写JavaScript代码,现在我想在PHP中使用一些简写。
考虑以下语句:
$value = 1;
return $value == 1 ?
'a' : $value == 2 ? 'b' : 'c';
请问有人能解释一下为什么在jQuery中返回'a'
,而在php中返回'b'
吗?
在PHP中,三元运算符是左关联的(或者从官方手册上来看,略微不太清晰)。
这是因为三元表达式从左往右进行评估。
在Javascript中,三元运算符是右关联的。
注意:条件运算符是右关联的。
所以,在PHP中,您的代码执行顺序如下:
($value == 1 ?
'a' : $value == 2) ? 'b' : 'c';
在JavaScript中,它的执行方式如下:
value == 1 ?
'a' : (value == 2 ? 'b' : 'c');
echo $value == 1 ?
'a' : ($value == 2 ? 'b' : 'c');
$value == 1 ? 'a' : ($value == 2 ? 'b' : 'c')
$value = 1;
echo $value == 1 ? 'a' : ($value == 2 ? 'b' : 'c');