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 です ?>