私はこれを持っています:
$color = $status == 1 || $status == 2 ? 'read' : 'unread' || $status == 3 ? 'delete' : 'unread';
しかし、それは間違っています。が 3 でない場合$status
- それでも「delete」を返します
なにが問題ですか?else if
これには省略形の代わりにa を使用する必要がありますか?
ありがとう。
結果のために何を得ようとしていますか?私はあなたが望むと仮定しています:
未読
$color = ($status == 1) ? 「読み取り」: ($ステータス == 3) ? 「削除」:「未読」
(これは、何らかの理由で、私の改行を表示していません)
ただし、読みやすくするために、またはのいずれかを使用しif/else
ますswitch
。
switch ($status) {
case 1: $color = 'read'; break;
case 3: $color = 'delete'; break;
default: $color = 'unread';
}
一般に、大幅な改善が得られない限り、「?:」形式は使用しません。通常、読みやすいほど良いです。
1) || 100% が OR と等しくない && など 100% が AND と等しくない
2) 括弧を使用する
PS: はい、「if .. else」を使用してください。コードの可読性が向上します。
これを速記で行うのはやめた方がいいと思います。3 日後に自分が何をしていたかを忘れてしまったときや、他の誰かがやってきたときにも、長く書いた方が読みやすくなります。
三項演算子には奇抜なバインディングがあります。
代わりにマップを使用することもできます。
$map = array(0=>"unread", 1=>"unread", 2=>"read", 3=>"delete");
$color = $map[ min(3,$status) ]; // min is actually the max value here
Chvanikoff のおかげで括弧付きで修正されました。
$color = ($status == 1 || $status == 2) ? 'read' : ('unread' || $status == 3 ? 'delete' : '');