ホームページ > バックエンド開発 > PHPチュートリアル > PHP の `0 == 'e'` が True と評価されるのはなぜですか?

PHP の `0 == 'e'` が True と評価されるのはなぜですか?

Patricia Arquette
リリース: 2024-12-16 07:32:18
オリジナル
677 人が閲覧しました

Why Does PHP's `0 ==

PHP の驚くべき文字列と数値の等価性: '0 == "e"' の異常を探る

PHP では、一見無害な比較が可能です。コード スニペットで明らかなように、予期しない結果が生じる以下:

$item['price'] = 0;
if ($item['price'] == 'e') {
    $item['price'] = -1;
}
ログイン後にコピー

$item['price'] を 0 に初期化しているにもかかわらず、'e' が価格に割り当てられると、if 条件は不可解にも true と評価され、0 を文字列 'e' と同等として扱います。 .

啓示: 型キャストと PHP の == Operator

原因は、比較を実行する前にオペランドを同じ型にキャストしようとする PHP の == 演算子にあります。この場合、整数 0 を文字列にキャストします。 「e」は有効な整数ではないため、0 になり、誤った一致が発生します。

解決策: 厳密な比較を採用

このような異常を回避するには、 == の代わりに === 演算子を使用することをお勧めします。 === は、型の強制を含まない厳密な比較を実行し、同じ型の値のみが等しいとみなされるようにします。

PHP 8 のゲームを変えるシフト

以前のバージョンから大きく変わって、PHP 8 では文字列と数値の比較の動作が変更されました。 PHP 8 では、数値を文字列にキャストする代わりに、可能な限り文字列を数値にキャストします。この変更は期待に沿ったもので、0 と 'e' が等しいとはみなされなくなりました。

要約

PHP の == 演算子は、比較するときに驚くべき結果を引き起こす可能性があります。型キャストによる文字列と数値。予期しない動作を防ぐには、=== 演算子を使用して厳密な比較を行うことが重要です。さらに、PHP 8 では文字列と数値の比較に対するアプローチが改訂され、コードの一貫性と正確性が強化されました。

以上がPHP の `0 == 'e'` が True と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート