PHP is_finite() 函数

定义和用法

is_finite() 函数用于判断一个浮点数是否为有限值,即不是无穷大(INF)也不是非数字(NAN)。

提示:如需判断是否为无穷大,请使用 is_infinite();如需判断是否为非数字,请使用 is_nan()

语法

is_finite(float $num): bool
参数 描述
num 必需。要检查的浮点数。

返回值

如果 num 是有限浮点数(不是 INF、-INF 或 NAN),则返回 true,否则返回 false

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?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)

示例 2:实际应用 - 验证计算结果

<?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。
  • 无穷大(INF)和负无穷大(-INF)都会使 is_finite() 返回 false。
  • NAN(非数字)也会使 is_finite() 返回 false。
  • 该函数在 PHP 8.0+ 中如果传入非数值类型参数会抛出 TypeError,而在之前版本中会发出警告。