0 は、数値ではない先頭の文字列 (つまり、数値に変換できない文字) と比較すると true を返します (演算子は ==)。
その理由は、比較するときです。数値と文字列を比較する場合は、まず文字列を数値に変換してから比較してください。文字列を数値に変換できない場合、変換結果は 0 になります。したがって、0 との比較は常に true を返します。
さらに詳細な比較ルール、PHP の複数の種類の比較ルールは、マニュアル/言語リファレンス/演算子/比較演算子で見つけることができます
PHP では、2 つの数値文字列 (数値のみを含む文字列) を比較する場合、数値に直接変換されます。比較のため
次の例: ( 2 つの変数 $a と $b の最後の桁が等しくないことに注意してください)
コードをコピーします コードは次のとおりです:
//例 1
< ;?php
$a = '511203199106034578';
$b = '511203199106034579';
echo '等しい'
}
? >
上記のプログラムを実行すると、結果は等しいことがわかりました(私たちが考えている結果ではありません)
$a と $b にそれぞれ文字 a を追加します
コードは次のとおりです://例 2
$a = 'a511203199106034578 ';コードは次のとおりです: $a = 511203199106034578;
echo $a; / 出力 5.1120319910603E+17、つまり 511203199106030000echo $b; // 出力 5.1120319910603E+17 は 511203199106030000 です
?>
この予期しない結果を回避するには、次のように型比較演算子 === を使用します。次の例 ($a が $b に等しく、型も同じ場合)
//例 4 $ a = '511203199106034578'; $b = '511203199106034579';
echo 'equal'; echo 'notEqual';
このようにして、期待される notEqual を取得できます
上記では、tellmewhen 文字列の内容を含め、無視されやすくエラーにつながる、Tellmewhen 文字列の PHP の落とし穴を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。