-PHPでは、型キャストは正常に機能します。常識を有効にする必要があります。
「なぜそれを比較しているのですか?」
-うわー、PHPの何らかの不具合、見て、2つのフロートを比較しています、それらは同じであるべきで、彼はそれらが等しくないことを教えてくれます。
-ああ、まあ、数字と文字列を比較するとき、何が機能するかを整理する必要があります。
同僚からこのようなことを聞いたことがありますか? 次に、型のキャスト、および==演算子での動作の例を示す金曜日の投稿を示します。
簡単に説明しますが、例だけがあります。 そして、読者の皆様、どうぞ。 いくつかの答えはネタバレの下に隠されています。 ネタバレの下で答えを見る前に、自分で答えてみてください。 正解ごとに、当然のことながら自分にポイントを追加します。 アンケートの投稿の最後に、結果を書き留めることを忘れないでください。 同意しましたか?
それでは行きましょう。
数字から始めましょう
数字を比較するよりも簡単なのは、数字を幼稚園と比較することです。
順序については、明らかなことを確認します。
11 == 11 // true, 12 == 11 // false, 12 == 0xC // true, 16-
そのような比較はどうですか?
12 == "0xC"
答えてみてください
本当 はい、ここで、文字列の値は、数値システムを考慮して整数に変換されました。
そして、これを試してみると?
12 == 014
クールは覗かない、覚えてる?
本当 他にどう? 014は8進数の同じ12です。
今このように:
12 == "014"
結果...
偽 望んでいて、ここで真実である人々は、あなたの要件を緩和します。「0xC」は12に変換され、それで十分です。
など:
14 == "014"
同様に...
前の例では、予想どおりtrueです。
ここではすべてが明らかなようです:
014 == "014"
正解は...
false。純粋に視覚的ですが、特に他の人のコードを読んでいる場合はすぐに気づきにくいです。
注意:
0 == "0,9"
答えは...
本当ですか? そして、はい、それはとても間違っています:0 ==“ 0.9”。 コンマは文字列記号と見なされ、それ以降はすべて破棄されました。
次の値を比較します。
"1e2" == "100"
私たちは...
1×10の2乗が100に等しいため、真です。
0b11 == 3 // true, 0b -
そして、もし0b11が並んでいるなら?
"0b11" == 3
比較...
false、これは16進数システムで機能し、バイナリシステムでは申し訳ありません。
今これを試してください:
2.333 == "2.333petrovich" // true, . 2.333 == "ivanovich2.333" // false, , . 0 == "ivanovich2.333" // true, .
そして、自分で試してください:
"2.33a" == "2.33b"
そして...
false、変換は行われず、文字列が比較されます。
233 == "233w1" // true,
ほぼ同じ:
233 == "233e1"
答えは...
false、はい、ここで233 * 10。
"233" == "233w1" // false 233 == "233*1" // true
もしそうなら?
233 == "233*2"
ここに...
正しい、ペトロヴィッチとの類推によって。
0 == "" // true
最初に自分ののぞき見しないでください:
"0" == ""
常識を有効にしようとしています...
false、調整します。
"1.000000000000000123" == "1.000000000000000456" // false, , .
行に2つのフロートもあります。
"2.000000000000000123" == "2.000000000000000456"
推測?
本当、驚かないでください、見た目は数字が異なりますが、2 == 2、ここではすべてが2に切り上げられます。
ブール比較
数字はシンプルで簡単であり、誰もが正しく答えたので、ここにいくつかの簡単な例を示します。
最初は、そのようなしゃれ...私は中Liについての冗談を思い出しましたが、おそらく控えるでしょう。
"true" == true // true "false" == true // true, true "false" == false // false, true "true" == false // false, true
ここではすべてがシンプルで明確です。
true == "0" // false, , true == "00" // true, ... true == 00 // false true == "00" + 0 // false, 0
もしそうなら追加:
true == "01" + 0
その後、私たちは...
trueですが、ここに1が追加されています。
true == "0x" + 0 // false
ゼロの前のスペース:
true == " 0"
確認しています...
誰かがスペースを落とすことを期待するかもしれませんが、ゼロとの比較があるでしょう。
true == 0x0 // false true == "0x0" // true, -, 0, true == "0.0" // true,
true == " " // true true == [] // false, - false true == [0] // - true
もしそうなら?
true == [[]]
確認しています...
true、ここでは配列には空の配列自体が含まれています。
ヌル
もう少し比較してみましょう。現在はnullです。
null == false // true, null == 0 // true, false == "0" // true,
類推によって推測してみてください:
null == "0"
私たちは...
false、どうやら、覚えておく必要があるだけです。
null == [] // true, null == [0] // false, -
配列
まあ、特に好奇心-配列の比較。
ここで自分で推測してください。覗かないでください:
[] == 0
確認しています...
null == 0および[] == nullですが、正確にfalseです。
[0] == 0 // false,
ドキュメントには、「$ aと$ bに同じキー/値のペアが含まれている場合、$ a == $ bはTRUEである」と書かれています。
このステートメントがどのように機能するかを確認しましょう。 さらに、ドックはキーの比較方法については何も言っていません。
[1 => 1] == [1 => 1] // true [1 => 1] == ["1" => 1] // true, : [1 => 1] == ["0x1" => 1] // false, , : array_keys([1 => 1]) == array_keys(["0x1" => 1]) // true : [1 => 1] == [1 => "0x1"] // true
なぞなぞ
そしてなぞなぞのデザート(私からではないなぞなぞ、同僚がかつて私にくれたなぞ)。
条件$ x == 1 && $ x == 2が満たされる場合、それが可能な場合、いつ、そうでない場合、そしてなぜですか?
しかし、履歴書はどうですか?
ここで要約すると、2本の脚を備えたスツールは、本来の目的に非常によく使用できます。 さらに、それはその前向きな側面を持っています、例えば、それは前庭の器具とgood部を良い形に保つのを助けます。 それで、ドックを読んで、コーンを埋めると、すべてがうまくいきます。