【发布时间】:2017-05-15 19:46:18
【问题描述】:
我已经看到线程PHP ternary operator error
我已经看到上面提到的线程并且正在使用括号,但它仍然没有给出预期的输出。
<?php
$ch = 'A';
$ans = (($ch == 'C') ? 'Cccc'
: ($ch == 'A') ? 'Aaaa'
: ($ch == 'G') ? 'Ggggg'
: ($ch == 'Y') ? 'Yyyyy'
: 'unknown');
echo $ans;
echo "\n";
?>
这会按预期输出 Yyyyy 而不是 Aaaa。谁能解释一下为什么?
【问题讨论】:
-
为什么不直接使用关联数组而不是三元序列?
-
感谢@Barmar 的建议!我可以使用关联数组,但我只是好奇为什么会这样
-
这是因为三元运算符是左结合的。所以就好像你写了
((($ch == 'C') ? 'Cccc' : ($ch == 'A') ? 'Aaaa' : ($ch == 'G') ? 'Ggggg' : ($ch == 'Y')) ? 'Yyyyy' : 'unknown')
标签: php ternary-operator php-7 php-5.6