这两行有什么区别
what is the difference between these two lines
使用相同的货币得到 2 个不同的输出 'egp'
$currency = ($q->currency == 'egp')? '£' : (($q->currency == 'usd') ? '$' : '€');
这一行输出$
$currency = ($q->currency == 'egp')? '£' : ($q->currency == 'usd') ? '$' : '€';
这个输出£
我找不到原因?
注意:唯一的区别是 ()
第二个三元运算符语句
考虑这段代码:
echo (true?"Left is first":(true?"Right is first":""));
Left is first
与
echo (true?"Left is first":true?"Right is first":"");
Right is first
可以在 http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary 找到解释。
简而言之,在第二种情况下 PHP 将评估 true?"Left is first":true
作为三元表达式的条件。这将评估为 Left is first
,其评估为真,因此 Right is first
将被回显
使用相同的货币得到 2 个不同的输出 'egp'
$currency = ($q->currency == 'egp')? '£' : (($q->currency == 'usd') ? '$' : '€');
这一行输出$
$currency = ($q->currency == 'egp')? '£' : ($q->currency == 'usd') ? '$' : '€';
这个输出£
我找不到原因?
注意:唯一的区别是 ()
第二个三元运算符语句
考虑这段代码:
echo (true?"Left is first":(true?"Right is first":""));
Left is first
与
echo (true?"Left is first":true?"Right is first":"");
Right is first
可以在 http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary 找到解释。
简而言之,在第二种情况下 PHP 将评估 true?"Left is first":true
作为三元表达式的条件。这将评估为 Left is first
,其评估为真,因此 Right is first
将被回显