ホームページ  >  記事  >  バックエンド開発  >  「==」を使用して 2 つの異なる文字列を比較すると、PHP はそれらが等しいとみなしますが、これは奇妙なことです。

「==」を使用して 2 つの異なる文字列を比較すると、PHP はそれらが等しいとみなしますが、これは奇妙なことです。

WBOY
WBOYオリジナル
2016-06-23 13:53:21908ブラウズ

if ("0e1683" == "0e0473"){
echo "相等"
}

"0e0983" と "0e0473" 比较也会相等,これは何かですか?


ディスカッションへの返信 (解決策)

あなたの数式は非常に特殊なので、生成タイプの比較を使用する必要があります
if("0e1683" === "0e0473")

理由は次のとおりです:
PHP は式の両側のデータ型が一致するように、比較中にデータ型を自動的に変換します。これは明らかではないでしょうか?異なるものは比較できません
たとえば、白い紙と紙幣は比較できません
PHP は、0e1683 と 0e0473 が両方とも科学表記法の数値であることを観察したため、数値的に比較しました
そして、0e1683 は 0 を表し、それに 10 を掛けます。 1683の累乗で、結果は0(0に任意の数値を掛けると0)になります
同様に、0e0473も0です
0 == 0
式が成立します

説明が分かりやすく、ありがとうございます!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。