1

私はこれを持っています:

$color = $status == 1 || $status == 2 ? 'read' : 'unread' || $status == 3 ? 'delete' : 'unread';

しかし、それは間違っています。が 3 でない場合$status- それでも「delete」を返します

なにが問題ですか?else ifこれには省略形の代わりにa を使用する必要がありますか?

ありがとう。

4

5 に答える 5

6

結果のために何を得ようとしていますか?私はあなたが望むと仮定しています:

  1. 読んだ
  2. 未読
  3. 消去
  4. 未読

    $color = ($status == 1) ? 「読み取り」: ($ステータス == 3) ? 「削除」:「未読」

(これは、何らかの理由で、私の改行を表示していません)

ただし、読みやすくするために、またはのいずれかを使用しif/elseますswitch

switch ($status) {
    case 1: $color = 'read'; break;
    case 3: $color = 'delete'; break;
    default: $color = 'unread';
}

一般に、大幅な改善が得られない限り、「?:」形式は使用しません。通常、読みやすいほど良いです。

于 2011-04-02T22:01:29.663 に答える
3

1) || 100% が OR と等しくない && など 100% が AND と等しくない
2) 括弧を使用する

PS: はい、「if .. else」を使用してください。コードの可読性が向上します。

于 2011-04-02T21:56:13.200 に答える
1

これを速記で行うのはやめた方がいいと思います。3 日後に自分が何をしていたかを忘れてしまったときや、他の誰かがやってきたときにも、長く書いた方が読みやすくなります。

于 2011-04-02T22:01:01.370 に答える
1

三項演算子には奇抜なバインディングがあります。

代わりにマップを使用することもできます。

$map = array(0=>"unread", 1=>"unread", 2=>"read", 3=>"delete");

$color = $map[ min(3,$status) ];   // min is actually the max value here
于 2011-04-02T22:04:43.447 に答える
0

Chvanikoff のおかげで括弧付きで修正されました。

$color = ($status == 1 || $status == 2) ? 'read' : ('unread' || $status == 3 ? 'delete' : '');
于 2011-04-02T22:01:42.893 に答える