ホームページ >バックエンド開発 >PHPチュートリアル >PHP は無視されやすく、数値と文字列の比較_PHP チュートリアルを引き起こします。

PHP は無視されやすく、数値と文字列の比較_PHP チュートリアルを引き起こします。

WBOY
WBOYオリジナル
2016-07-21 15:23:01713ブラウズ

0 数値ではない先頭の文字列 (つまり、数値に変換できない文字) と比較 (演算子 ==) し、true を返します。

その理由は、数値と文字列を比較する場合、まず文字列を数値に変換してから比較するためです。文字列を数値に変換できない場合、変換結果は 0 になるため、0 との比較は常に true を返します。

より詳細な比較ルール、複数のタイプの比較ルールは、

PHP マニュアル/言語リファレンス/演算子/比較演算子を参照してください。
2 つの数値文字列 (数字のみを含む文字) が PHP 文字列で使用される場合、比較のために数値に変換します
次の例: (2つの変数 $a と $b の最後の桁が等しくないことに注意してください)

コードをコピーします コードは次のとおりです:
/ /例 1
$a = '511203199106034578';
if ($a==$b) {
echo 'equal'; else {
echo '等しい' ;
}
?>


上記のプログラムを実行すると、結果は同じであることがわかりました (予想した結果ではありません)
$a と $b にそれぞれ文字 a を追加します




コード
コードは次のとおりです: // 例 2 & lt ;? PHP $ a = 'a51120319910606034578'
} else {
echo '等しくない'
}
?>


今回の出力は notEqual (正しい結果) です

PHP は 2 つの数値文字列を数値型に変換するため、例 1 は等しくなります。以下に示すように、これら 2 つの数値は正確に等しいです



コードをコピーします

コードは次のとおりです:


$a = 511203199106034578; $b = 511203199106034579; // 出力 5.1120319910603E+1 7 つまり、511203199106030000 echo $b; 5.1120319910603E+17 つまり、511203199106030000 です ?>
したがって、例 1 で得られた結果は等しいです

この予期しない結果を回避するには、型比較演算子を使用します === 次の例 (if $aは $b に等しく、型も同じです)



コードをコピーします
コードは次のとおりです:


//例 4
$a = '511203199106034578' ; $b = '511203199106034579'; if ($a===$b) { echo 'equal'; } else { equal
?>


等しくない





http://www.bkjia.com/PHPjc/324586.html

www.bkjia.com
tru​​e
http://www.bkjia.com/PHPjc/324586.html技術記事

0 を数値ではない先頭の文字列 (つまり、数値に変換できない文字) と比較すると (演算子は ==)、true が返されるためです。最初に文字列を変換します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP 配列関数シーケンス array_intersect() は、2 つ以上の arrays の交差配列を返します_PHP チュートリアル次の記事:PHP 配列関数シーケンス array_intersect() は、2 つ以上の arrays の交差配列を返します_PHP チュートリアル

関連記事

続きを見る