関数の概要
PHPの is_nan 関数は、引数として渡された値が「数値ではない」(NaN:Not a Number)かどうかを判定するための関数です。数値演算や数値の検証処理を行う際に、対象の値が無効な数値(NaN)であるかを簡単に確認できます。
パラメータの説明
float $val:判定したい数値、または数値に変換可能な値を指定します。
戻り値
is_nan は、引数がNaNの場合は true を返し、それ以外の場合は false を返します。つまり、判定した値が通常の数値の場合は false となります。
使用例
基本的な使い方
<?php
$a = acos(1.01); // acosの範囲外でNaNが返る
var_dump(is_nan($a)); // bool(true)
$b = 5.5;
var_dump(is_nan($b)); // bool(false)
?>
この例では、実数の範囲外の値を acos() に渡した結果が NaN となるため、is_nan が true を返します。一方、普通の数値5.5は false となります。
数値計算のエラー検出に利用する例
<?php
function safe_divide($x, $y) {
$result = $x / $y;
if (is_nan($result)) {
return "計算エラーです";
}
return $result;
}
echo safe_divide(0, 0); // NaNとなるためエラー判定
?>
ゼロ除算など計算結果が NaN になるケースを is_nan で検出し、エラー処理を実装する応用例です。
数値検証に配列を用いた応用例
<?php
$values = [10, acos(5), 3.14, log(-1)];
foreach ($values as $v) {
if (is_nan($v)) {
echo "NaNが見つかりましたn";
} else {
echo "数値: $vn";
}
}
?>
複数の値を順に調べ、NaNを判別してメッセージを表示しています。角度関数や対数関数でよく発生するNaNをチェックできる例です。
関連する関数
is_int:値が整数かどうか判定するis_float:値が浮動小数点数かどうか判定するis_numeric:値が数値または数値形式の文字列か判定するfloatval:値を浮動小数点数に変換する
まとめ
is_nan 関数は、PHPで数値が正常な値か、または無効な数値(NaN)かを判別する際に便利です。特に数学関数の結果や計算による異常値を検出し、エラー処理やデータ検証に役立てることができます。数値操作の安全性を高めるために、ぜひ使いこなしてみてください。
