ホームページ >バックエンド開発 >PHPチュートリアル >PHP で文字列を 0 と比較すると予期しない結果が生じるのはなぜですか?
文字列と整数の奇妙な比較結果
文字列と整数を比較すると、PHP の型強制ルールにより、予期しない結果が発生する可能性があります。提供された例では:
$test1 = "d85d1d81b25614a3504a3d5601a9cb2e"; $test2 = "3581169b064f71be1630b321d3ca318f"; if ($test1 == 0) echo "Test 1 is Equal!?"; if ($test2 == 0) echo "Test 2 is Equal!?";
文字列 "d85d1d81..." には有効な数値データが含まれていないため、0 として解釈されるため、テスト 1 は成功します。
ただし、テスト 2 は失敗します。文字列「3581169b...」には有効な数値データ (最初の「3581169」) が含まれているためです。 PHP の変換ルールによれば、この最初の部分は 0 ではない数値を決定するために使用されます。PHP マニュアルでは、文字列は次のように評価されると説明しています。
「.」、「e」、または「E」が含まれている場合は、 float.以上がPHP で文字列を 0 と比較すると予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。