0
私はすでにスレッドPHP ternary operator errorなぜPHPの3進演算子が間違った出力を出すのですか?
を見てきた私は、上記のスレッドを見ていると括弧を使用していますが、まだそれが期待される出力を与えるものではありません。
<?php
$ch = 'A';
$ans = (($ch == 'C') ? 'Cccc'
: ($ch == 'A') ? 'Aaaa'
: ($ch == 'G') ? 'Ggggg'
: ($ch == 'Y') ? 'Yyyyy'
: 'unknown');
echo $ans;
echo "\n";
?>
これはYyyyy
と期待通りではないAaaa
出力します。なぜ誰かが説明できますか?
3進数列の代わりに連想配列を使用してみませんか? – Barmar
提案してくれてありがとう@Barmar!私は連想配列を使うことができますが、なぜこれが起きているのか不思議でした。 – mrid
これは三項演算子が左結合であるからです。 ($ ch == 'C')?Cccc ' :($ ch ==' A ')?' Aaaa ' :($ ch ==' G ')?' :($ ch == 'Y'))? 'Yyyyy' : '不明') ' – Barmar