PHP君が知らないこと--二等号

1095 ワード

PHPの2等号比較では、タイプは比較されず、値が等しいかどうかを比較するだけですが、2等号は非常に隠れた暗黙的な変換をします.
まず、いくつかのインスタンスコードを見てみましょう.
<?php
var_dump( 0 == "a" ); 

var_dump( "0" == "a" ); 

この2つの比較の戻り結果を考えてください.
答え:
最初はtrueを返します.2番目はfalseを返します.
理由:
PHPが弱いタイプのため、開発が便利になると同時に、多くの人がタイプ間の問題を無視しています.PHPが手伝ってくれたからです.多くの隠れた危険も残っているが、これはプログラム猿の個人レベルにかかっている.
例えばPHP開発者はよく1=「1」と書いて問題がなかったようです.
1つ目:
前の0はINT型の値で、後ろの0は文字型で、この文字型は数字で始まるものではありません.両者のタイプが異なるため、PHPは比較前にタイプ変換を行い、暗黙的にnoticeなどのヒントはありません.その上のコードは実際には次のように書くことができます.
<?php
var_dump( 0 == (int)"a" );

今でもtrueに戻るべきではないと思いますか?PHPの0は文字列と比較してtrueを返します.彼の奇抜なことではありません.これらのプログラムが私たちを助けてくれたことを理解しなければなりません.
2つ目:
これは何も言わないで、ただ対比して説明して、文字列の対比文字列はfalseの予想の中を返します.