ホームページ >バックエンド開発 >PHPチュートリアル >PHP で文字列を 0 と比較すると予期しない結果が生じるのはなぜですか?

PHP で文字列を 0 と比較すると予期しない結果が生じるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-07 11:44:11152ブラウズ

Why Does Comparing a String to 0 in PHP Produce Unexpected Results?

文字列と整数の奇妙な比較結果

文字列と整数を比較すると、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.
  • それ以外の場合は、整数です。
  • 有効な数値データで始まる場合、それが値です。
  • それ以外の場合、値は 0 です。
  • $test2 の場合、最初の「3581169」が有効な数値データなので、値が 0 ではないため、比較は失敗します。

以上がPHP で文字列を 0 と比較すると予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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