【问题标题】:Why does php ternary operator give wrong output? [duplicate]为什么php三元运算符输出错误? [复制]
【发布时间】: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


【解决方案1】:

大括号没有正确放置。试试这个

$ch = 'A';
    $ans = ($ch == 'C' ? 'Cccc' :
         ($ch == 'A' ? 'Aaaa' :
         ($ch == 'G' ? 'Ggggg' : 
         ($ch == 'Y' ? 'Yyyyy':
         'unknown'))));
    echo $ans;
    echo "\n";

【讨论】:

  • 我不确定为什么它按预期工作而被否决。
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 2021-10-30
  • 2018-03-16
  • 2021-12-13
相关资源
最近更新 更多