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

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

DDD
DDDオリジナル
2024-12-15 00:59:13926ブラウズ

Why Does PHP's `==` Operator Produce Unexpected Results When Comparing 0 and Strings?

PHP による 0 と文字列の驚くべき比較

PHP が 0 を文字列と等しいと評価するのは、その比較演算子の動作から生じます。比較に == を使用すると、PHP は互換性があるようにデータ型を変換します。この場合、0 (整数) が文字列にキャストされ、文字列 'e' と比較できるようになります。

ただし、価格が明示的に 0 に設定されている場合、この動作は矛盾します。これは == と === の微妙な違いに起因すると考えられます。 == は型変換を実行し、=== はデータ型を含む厳密な同等性をチェックします。

=== を使用すると、型を含む実際のデータ値に基づいて比較が行われます。提供されたコードで == を === に置き換えると、価格が 0 に設定されている場合に 0 が 'e' に等しくないものとして正しく評価されます。

PHP バージョン変更に関するメモ:

PHP 8 では、比較動作が変更されました。数値文字列を数値と比較する場合、PHP は数値比較を使用するようになりました。それ以外の場合、PHP は比較を行う前に数値を文字列に変換します。

===:

$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] === 'e') {
    $item['price'] = -1;
}

を使用したコード例 この修正により、コードは、比較を行う前に数値を文字列に変換します。価格は 0 または交換 'e' として意図されており、アイテムの価格設定が適切に処理されるようにします。

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

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