is_finite() 函数用于判断一个浮点数是否为有限值,即不是无穷大(INF)也不是非数字(NAN)。
is_finite(float $num): bool
| 参数 | 描述 |
|---|---|
num |
必需。要检查的浮点数。 |
如果 num 是有限浮点数(不是 INF、-INF 或 NAN),则返回 true,否则返回 false。
<?php
$finite = 3.14;
$inf = INF;
$nan = NAN;
var_dump(is_finite($finite)); // bool(true)
var_dump(is_finite($inf)); // bool(false)
var_dump(is_finite($nan)); // bool(false)
var_dump(is_finite(42)); // bool(true) 整数会被转换为浮点数检查
?>
输出:
bool(true)
bool(false)
bool(false)
bool(true)
<?php
function safeDivide($a, $b) {
if ($b == 0) {
return NAN; // 除以零返回非数字
}
return $a / $b;
}
$result1 = safeDivide(10, 2);
$result2 = safeDivide(10, 0);
if (is_finite($result1)) {
echo "10/2 = " . $result1 . " (有效结果)<br>";
} else {
echo "10/2 结果无效<br>";
}
if (is_finite($result2)) {
echo "10/0 = " . $result2 . " (有效结果)<br>";
} else {
echo "10/0 结果无效 (是NAN或无穷大)<br>";
}
?>
输出:
10/2 = 5 (有效结果)
10/0 结果无效 (是NAN或无穷大)
is_finite() 只对浮点数有意义。如果传入非浮点数,PHP 会将其转换为浮点数后再判断,例如整数 42 会被转换为 42.0,然后返回 true。is_finite() 返回 false。is_finite() 返回 false。