現在の位置: ホーム> 最新記事一覧> PHPの数値とのIS_NANとの比較:一般的なトラップとソリューション

PHPの数値とのIS_NANとの比較:一般的なトラップとソリューション

gitbox 2025-05-19

PHPでは、 IS_NAN()関数は、値が「非数値」(NAN)であるかどうかを確認するための非常に便利なツールです。ナンは「数字ではない」の略語です。つまり、いくつかの数学的操作の結果は無効または代表不能であることを意味します。 NANは、特別な値として、通常、ゼロで割る、計算プロセス中に無効な値に遭遇するなど、浮動操作中に発生します。

この記事では、IS_NAN()関数の基本的な使用法を調べて、数値比較の一般的な落とし穴を回避するためにそれを使用する方法について説明します。

ナンとは何ですか?

NANは浮動操作の特別な価値であり、有効な数字ではないことを示しています。 JavaScript、Python、およびPHPでは、NANは有効であると表現できない値を表します。

例えば:

 $number = 0 / 0;  // 消す NaN

この例では、操作をゼロで割ったのは無効な数学的操作であるため、 $数はnanになります。

phpのIS_NAN()関数

PHPはIS_NAN()関数を提供して、値がNANであるかどうかを確認します。その構文は次のとおりです。

 is_nan(mixed $var): bool
  • $ var :検出する変数。

  • 戻り値:変数がnanの場合はtrueを返し、それ以外の場合はfalse

例:

 $val1 = 0 / 0;  // NaN
$val2 = 10;     // 番号

echo is_nan($val1) ? "はい NaN" : "不はい NaN";  // 出力:はい NaN
echo is_nan($val2) ? "はい NaN" : "不はい NaN";  // 出力:不はい NaN

この例では、 $ VAL1はNANであり、 $ VAL2は有効な数値値です。

一般的な数値比較トラップ

1。nanを比較するには、 ==または===使用します

NANは(それ自体を含む)任意の価値と等しくありません。 ==または===を使用して、変数がNANであるかどうかを比較すると、結果は混乱している可能性があります。次のコードを検討してください。

 $val1 = 0 / 0;  // NaN

if ($val1 == $val1) {
    echo "値は等しい";
} else {
    echo "値は等しいです";  // 出力:値は等しいです
}

同じ変数を比較している場合でも、NANがNANに等しくないため、結果は依然として間違っています

2。IS_NAN ()を使用して、トラップを避けます

この比較の問題を回避するために、 IS_NAN()関数は非常に効果的なツールです。 IS_NAN()を使用すると、 == OR ===の誤用を心配することなく、変数がNANであるかどうかを直接検出できます。

 $val1 = 0 / 0;  // NaN

if (is_nan($val1)) {
    echo "这はい一个 NaN 価値";  // 出力:这はい一个 NaN 価値
}

この方法は、NAN値をより明確かつ正確に処理するのに役立ちます。

実用アプリケーション:フォームデータのNAN値の処理

多くのWebアプリケーションでは、ユーザーは非数値データを含むフォームを送信して、バックグラウンドの数値比較にエラーが発生する場合があります。 IS_NAN()関数を使用すると、そのような問題を効果的に回避できます。

ユーザーが数値を提出する単純なフォームがあり、有効な番号であるかどうかを確認する必要があるとします。

 if (isset($_POST['submit'])) {
    $value = $_POST['number'];
    
    // 检查はい否为有效的数価値
    if (is_nan($value)) {
        echo "無効な入力,请输入一个有效的番号。";
    } else {
        echo "输入的番号はい:$value";
    }
}

この例では、 IS_NAN()は、無効な入力がさらに処理されるのを効果的に防ぐことができ、数値を比較するときにNANのためにアプリケーションがクラッシュしないようにします。

URLの例のNAN比較

実際の開発では、URLアドレスに関連するロジックでNANを判断する必要がある場合があります。ユーザーがGETリクエストを介してURLパラメーターを送信するPHPアプリケーションがあるとします。 URLが有効な数値値(IDの渡しまたは金額など)であるかどうかを確認する必要があります。有効な値が渡されない場合、NANまたは外れ値を処理できます。

これが例です:

 // 私たちが受け取ると仮定します URL 参数はい某个计算的结果
$url = "https://gitbox.net/calculation?value=" . $_GET['value'];

$value = $_GET['value'];

if (is_nan($value)) {
    echo "URL 中传递的価値不はい有效番号,リンクを確認してください:$url";
} else {
    echo "URL 中传递的番号はい有效的:$value";
}

この例では、URLパラメーターを検出することにより、有効な値が含まれていることを確認します。 NANが検出された場合、リンクを確認するようユーザーに思い出させます。

要約します

IS_NAN()は、数値を扱うときに遭遇する多くの一般的な落とし穴を回避するのに役立つ非常に有用なPHP関数です。 IS_NAN()を正しく使用することにより、NAN値がプログラムロジックを妨害することを効果的に回避でき、コードをより堅牢で維持しやすくします。

数値を比較している場合は、比較に直接==または===を使用するのではなく、is_nan()を使用して変数の妥当性を確認することを忘れないでください。