私は何か奇妙なことを見つけました...、私は私の関数の最後にこのコードを持っています:
return $class == 3?"red":$class==2?"orange":$class==1?"yellow":"";
さて、$class == 2
これが「黄色」を返し、期待どおり「オレンジ」ではありません。誰かが私にこれを説明できますか?
私は何か奇妙なことを見つけました...、私は私の関数の最後にこのコードを持っています:
return $class == 3?"red":$class==2?"orange":$class==1?"yellow":"";
さて、$class == 2
これが「黄色」を返し、期待どおり「オレンジ」ではありません。誰かが私にこれを説明できますか?
PHP では三項演算子は左結合であるため、括弧を使用する必要があります。結合性とは、「同じ優先順位の演算子が括弧なしでグループ化される」方法です -演算子の結合性より
$class == 3?"red":($class ==2?"orange":($class ==1?"yellow":""));
これは、次のように扱われるためです。
return (($class == 3?"red":$class==2)?"orange":$class==1)?"yellow":"";
したがって、括弧を追加して、正しい使用を強制します。
return $class == 3?"red":($class==2?"orange":($class==1?"yellow":""));
私はそのようにコーディングすることは決してありません。コーディングしているときは、コードの一部が何をしているのかをすぐに確認したいと本当に思っています。これはそれをしません、これはあなたに頭痛の種を与えているだけです;-)
多分それを何か明確なものに変更してください:
switch($class) {
case 1:
return 'yellow';
case 2:
return 'orange';
case 3:
return 'red';
default:
return '';
}
括弧を使用します:
$class = 2;
echo $class == 3?"red":($class==2?"orange":($class==1?"yellow":""));
出力:orange