if ($hoge == false){ ... }
と
if (false == $hoge){ ... }
って何か違う意味を持ちますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
全く同じです。ただ、if ($hoge = false)
と代入してしまうミスを防ぐために、代入できないfalse
を先に書く流儀もあって、「ヨーダ記法」という名前もついていたりします。
なお、==
の性質上(片方がbooleanだともう片方もbooleanに変換される)、if($hoge == false)
はif(!$hoge)
と同じ意味になります(PHPマニュアル)。基本的に、==
での比較は複雑怪奇となりますので、できるだけ===
を使うことをおすすめします。
投稿2017/10/20 11:57
総合スコア146018
0
何か違う意味を持ちますか?
多分 左辺、右辺の順で値を評価してから、2つの値を評価しているはずです。
その場合、左辺・右辺の計算が何か副作用を持っていると、if 文の実行後には変化がでます。
極端な例ですが、以下をご覧ください。
(ruby でかいてますが、他の言語でも同様だと思います)
if.rb
ruby
1a = 0 2if (a=1) != (a=2) 3 puts 'true' 4end 5puts a 6 7a = 0 8if (a=2) != (a=1) 9 puts 'true' 10end 11puts a
実行結果
$ ruby if.rb true 2 true 1
右辺、左辺は、 変数 a に値を設定した後に、その値そのものを表すようになってます。
if 文の両辺の値計算で後に計算された方法の値が a に設定されます。
左辺、右辺の順序を変えても、if の条件文の true/false の判定は同じですが、
a の値は、異なってしまいます。
上の例では、 a の値を変化させているのが明らかだからなにが起こっているかわかります。
でも 比較する両辺が何かのメソッドになっていて、そのメソッド中での副作用があるなら、左辺・右辺のいれ
投稿2017/10/21 14:38
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/24 12:13
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。