Signatur
Beschreibung
is_finite() gibt true zurück, wenn der übergebene Gleitkommawert eine reguläre, endliche Zahl ist – also weder positiv/negativ unendlich (INF bzw. -INF) noch kein-Zahl (NAN). In allen anderen Fällen wird false zurückgegeben.
Die Funktion ist besonders nützlich, wenn das Ergebnis mathematischer Operationen validiert werden muss, bevor es weiterverarbeitet wird. Typische Quellen für nicht-endliche Werte sind Divisionen durch null (liefert INF), Logarithmen von null oder negativen Zahlen, oder Arkussinus/Arkuskosinus von Werten außerhalb des Wertebereichs.
- Endliche Zahl: gibt
truezurück (z. B.3.14,-42.0,0.0). INFoder-INF: gibtfalsezurück.NAN: gibtfalsezurück.
Als Gegenstück existieren is_infinite() für den Test auf Unendlichkeit und is_nan() für den Test auf NAN. Zusammen decken diese drei Funktionen alle möglichen Zustände eines PHP-Floats ab.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num Pflicht | float | Der zu prüfende Gleitkommawert. |
Rückgabewert
true zurück, wenn num eine endliche Zahl ist. Gibt false zurück, wenn num gleich INF, -INF oder NAN ist.Beispiele
Grundlegende Verwendung mit verschiedenen Werten
<?php
var_dump(is_finite(3.14)); // normale Zahl
var_dump(is_finite(INF)); // positiv unendlich
var_dump(is_finite(-INF)); // negativ unendlich
var_dump(is_finite(NAN)); // kein-Zahl
var_dump(is_finite(0.0)); // null ist endlich
var_dump(is_finite(1.0 / 0)); // Division durch null => INF
// PHP erzeugt hier eine Division-durch-null-Warnung; der zurückgegebene Wert ist INF
Absicherung vor der Weiterverarbeitung eines Rechenergebnisses
<?php
function berechneLogarithmus(float $wert): string
{
$ergebnis = log($wert);
if (!is_finite($ergebnis)) {
return 'Ungültiger Wert: Logarithmus ist nicht endlich (z. B. bei 0 oder negativen Zahlen)';
}
return 'log(' . $wert . ') = ' . $ergebnis;
}
echo berechneLogarithmus(M_E) . PHP_EOL; // normaler Fall
echo berechneLogarithmus(0.0) . PHP_EOL; // ergibt -INF
echo berechneLogarithmus(-5.0) . PHP_EOL; // ergibt NAN
// Wichtig · Fallstricke
Wichtig: PHP gibt bei einer Division durch null (z. B. 1.0 / 0) einen INF-Wert zurück und erzeugt gleichzeitig eine Division by zero-Warnung. Der Fehler muss also separat behandelt werden; is_finite() allein verhindert die Warnung nicht.
Bei der Übergabe eines Integer-Werts an is_finite() wird dieser intern in einen Float konvertiert. Normale Integer-Werte liefern daher immer true.