PHPのis_finite()関数とは?値が有限数かどうかを判定する方法
定義と使い方
is_finite() 関数は、引数として渡された値が有効な有限数(finite number)であるかどうかを判定し、ブール値(真偽値)を返します。値が有限数であれば TRUE を、そうでなければ FALSE を返します。
この関数は、数学的な計算の結果が無限大(INF)や非数(NAN)になっていないかを確認したい場合に特に役立ちます。
構文
is_finite ( float $val ) : bool
パラメータ
| 番号 | パラメータと説明 |
|---|---|
| 1 | val 有限数であるかどうかを検証する対象の値 |
戻り値
PHP の is_finite() 関数は、val が float 型として許容される範囲内の有限数であれば TRUE を返し、無限大や NAN など範囲外の値であれば FALSE を返します。
対応するPHPバージョン
この関数は PHP 4.x、PHP 5.x、PHP 7.x のすべてのバージョンで利用可能です。
使用例1:通常の数値の判定
次の例では、100 が有限数であることを確認しています。
<?php
$val = 100;
$ret = is_finite($val);
if ($ret == TRUE) {
echo $val . " は有限数です" . "\n";
} else {
echo $val . " は有限数ではありません" . "\n";
}
?>
実行結果
上記のコードを実行すると、次のような結果が出力されます。
100 は有限数です
使用例2:log(0) の判定
log(0) の値は定義されていません。次の例では、その結果が有限数かどうかを検証しています。
<?php
$val = log(0);
var_dump(is_finite($val));
?>
実行結果
bool(false)
使用例3:acos() の範囲外の値の判定
cos(x) の値は必ず -1 から 1 の間に収まるため、この範囲外の値を acos() に渡すと NAN(非数)が返されます。
<?php
$val = acos(5);
var_dump(is_finite($val));
?>
実行結果
bool(false)
使用例4:sqrt(-1) の判定
同様に、sqrt(-1) は NAN を返すため、is_finite() 関数は FALSE を返します。
<?php
$val = sqrt(-1);
$ret = is_finite($val);
if ($ret == TRUE) {
echo $val . " は有限数です" . "\n";
} else {
echo $val . " は有限数ではありません" . "\n";
}
?>
実行結果
NAN は有限数ではありません
まとめ
is_finite() 関数を使うことで、計算結果が無限大や NAN になっていないかを簡単にチェックできます。ユーザー入力のバリデーションや、数学的な処理のエラーチェックなどに活用すると、より堅牢なコードを書くことができます。なお、類似の関数として is_infinite()(無限大かどうかの判定)や is_nan()(非数かどうかの判定)もありますので、用途に応じて使い分けるとよいでしょう。
-
PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説
PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)
-
PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説
PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。基本構文fscanf(file_pointer, format, mixed)パラメータの詳細file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。%% − パーセント記号(%)そのものを返す%b − 2進数として読み込