PHPでの型キャスト==二本足のスツール?

画像



-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部を良い形に保つのを助けます。 それで、ドックを読んで、コーンを埋めると、すべてがうまくいきます。



All Articles