PHPでは、 is_nan()とis_numeric()は、「数字ではない」(nan)と数値文字列であるかどうかを決定するために使用される2つの一般的に使用される関数です。ただし、多くの人が混乱している可能性があります。場合によってはis_nan()がtrueを返す理由、 is_numeric()がfalseを返す可能性があります。この記事では、これらの2つの機能がどのように深く機能するかを掘り下げ、それらの違いを説明します。
IS_NAN()は、値がNANであるかどうかを確認するために使用される関数です(数字ではありません)。 NANは、違法な数値計算結果を表す特別な浮動小数点値です。たとえば、数学操作を実行すると、結果が有効な数字でない場合はNANが返される場合があります。一般的に、ナンは次の状況によって引き起こされます。
0は0で割っています
負の数の平方根
無効な数学的式(次のような:無効な文字列を数値に変換)
これらの違法な数字は、is_nan()を使用して検出できます。
$var1 = acos(2); // これは違法な操作です,acos(2) 戻ります NaN
$var2 = 0 / 0; // 0 別れます 0 結果もそうです NaN
echo is_nan($var1); // 出力 true
echo is_nan($var2); // 出力 true
is_numeric()は、変数が数値文字列または数値文字列であるかどうかを判断するために使用されます。この関数は、指定された値が法的数値タイプであるかどうか、または数値に変換できるかどうかをチェックします。 is_numeric()は、値が有効なフローティングポイント数であるかどうかを確認しないが、数値として表現できるかどうかを確認することに注意する必要があります(整数または浮動小数点数を含む)。
echo is_numeric(123); // 出力 true,123 それは数字です
echo is_numeric("123"); // 出力 true,弦 "123" 也それは数字です
echo is_numeric("12.34"); // 出力 true,弦 "12.34" 也それは数字です
echo is_numeric("abc"); // 出力 false,"abc" 不それは数字です
is_nan()とis_numeric()の両方に数字の検出が含まれますが、特にNANを扱う場合、それらの検査メカニズムは異なります。
IS_NAN()は、値がNANであるかどうかを確認するために特に使用されます。これは特別な「非番号」値です。 NANは浮動点の状態であり、 is_numeric()は、値を有効な数値に変換できるかどうかのみを気にします。
is_nan()がtrueを返すと、nanは有効な数字ではないためfalseを返し、 is_numeric ()は有効な数字または文字列のみを数値に変換できるために認識できます。 NANは法律番号と見なすことができないため、 is_numeric()はfalseを返します。
$var = acos(2); // NaN
echo is_nan($var); // 出力 true,$var はい NaN
echo is_numeric($var); // 出力 false,NaN 不はい一个合法的数字
is_nan()は、値がnanであるかどうかのみを決定できます。それが真実に戻る場合、それは値が違法な数であることを意味します。
is_numeric()は、値を有効な数値として使用できるかどうかを確認するために使用されますが、NANは無効な数値と見なされるため、 FALSEを返します。
これが、phpで、 is_nan( )がtrueを返すとfalseを返す理由です。