这两行之间有什么区别

时间:2016-07-06 13:41:39

标签: php conditional-operator

使用相同的货币'egp'

获得2个不同的输出

myApp.controller('MyCtrl', function($scope){ $scope.fileUploaded = function(data){ console.log(data); }; })

此行输出$currency = ($q->currency == 'egp')? '£' : (($q->currency == 'usd') ? '$' : '€');

$

这个输出$currency = ($q->currency == 'egp')? '£' : ($q->currency == 'usd') ? '$' : '€';

我无法找到原因?

注意:唯一的区别是第二个三元运算符语句

周围的£

1 个答案:

答案 0 :(得分:1)

考虑以下代码:

echo (true?"Left is first":(true?"Right is first":""));
  

左边是第一个

Versus

echo (true?"Left is first":true?"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,其评估为true,因此Right is first将被回显