ホームページ  >  記事  >  バックエンド開発  >  なぜ if(zero=='abc') が通るのでしょうか?

なぜ if(zero=='abc') が通るのでしょうか?

WBOY
WBOYオリジナル
2016-06-13 13:22:40912ブラウズ

if(0=='abc') が
を通過するのはなぜですか? if(0=='abc') が true を示すのはなぜですか?原則についてアドバイスをお願いします

-----解決策--------------------------
if (0 = = intval('abc')) 弱い型。後者は前の型に変換され、比較されます。

を使用する必要があります 0 === 'abc '
-----解決策---------
'abc' が強制的に ( int) に変換されたため'abc'、0 == intval('abc') と同じ。 。

この動作には全く気づきませんでした。 。 PHP は方向性に反すると思います。
------解決策---------
文字列と数値を判断したい場合は、 will Strings は int 値を取るので、int の意味では abc は 0 なので、等しいと判断できます。そのため、型も判断されます。
------解決策---------
この比較は厳密ではありません。少なくとも === を使用してください
------解決策---------

PHP コード
var_dump((int) 'abc'); //int(0)
<br><font color="#e78608">------解決策---------</font><br>ls は 2 人が回答しました。 if(0=='abc') は if(0==intval('abc')) と等しい <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。