这两行有什么区别

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 将被回显