1

三項演算子で複数の変数に代入する方法の質問に対する回答を書いた後、私が書いたコードを実際に試してみました。

true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400;
var_dump($w); var_dump($r);

(無駄だと気にしないでください。これは理論上の話です。)

ここで、演算子の優先順位に従って、PHP がこのようにすることを期待します。

 true  ?   $w = 100  xor  $r = 200   :   $w = 300  xor  $r = 400  ;
(true) ? ( $w = 100  xor  $r = 200 ) : ( $w = 300  xor  $r = 400 );
(true) ? (($w = 100) xor ($r = 200)) : (($w = 300) xor ($r = 400));

三項演算子の最初の部分が評価されると、次のように出力されます。

int 100
int 200

しかし、代わりに私は得る

int 100
int 400

三項演算子の両方の部分を実行する必要があるため、これは私にとって非常に奇妙です。

私の考えのどこかが間違っているとしましょう。

4

2 に答える 2

4

やってるだけじゃないの

(true ? $w = 100 xor $r = 200 : $w = 300) xor $r = 400;
于 2010-07-15T22:21:55.830 に答える
3

この方法で三項演算子を使用することはまったくありません。論理コード構造の代わりとしてではなく、値を返すために式全体が必要な場合は、三項演算子を使用します。

例えば:

if (true) {
  $w = 100;
  $r = 200;
} else {
  $w = 300;
  $r = 400;
}

var_dump($w); 
var_dump($r);

if/else コンストラクトを使用する利点:

  • 読みやすく、保守しやすく、デバッグしやすい。
  • 必要に応じて、各条件付きブロック内にステップを簡単に追加できます。
  • コード カバレッジ ツールを使用してテストを実行すると、すべてのコードが 1 行に収まっていないときに、どのコード パスがテストされているかをより正確に把握できます。
  • 問題を解決するために Stack Overflow に質問を投稿する必要はありません。

三項演算子を使用する利点:

  • 中括弧とセミコロンが不足している場合やキーボードで見つからない場合に備えて、使用する中括弧とセミコロンを減らします。
于 2010-07-15T22:34:42.087 に答える