W3docs

is_infinite()

Erfahren Sie mehr über die Funktion is_infinite() in PHP, die prüft, ob ein Wert unendlich ist, und wie Sie sie praktisch einsetzen.

Die Funktion is_infinite() in PHP prüft, ob ein Gleitkomma-Wert unendlich ist – also gleich INF (positive Unendlichkeit) oder -INF (negative Unendlichkeit). Diese Seite erklärt, was als „unendlich" gilt, wie sich die Funktion verhält und in welchen praktischen Situationen man sie einsetzt.

Syntax und Rückgabewert

is_infinite(float $num): bool
  • $num — der zu prüfende Wert.
  • Gibt true zurück, wenn $num gleich INF oder -INF ist, und false für jeden anderen Wert, einschließlich normaler endlicher Zahlen und NAN (Not a Number).

is_infinite() ist nur für Gleitkommazahlen sinnvoll. Integer können in PHP niemals unendlich sein, daher gibt die Funktion für sie immer false zurück.

Woher kommen unendliche Werte?

In PHP folgen Gleitkommazahlen dem IEEE 754-Standard, der spezielle Werte für Unendlichkeit kennt. INF oder -INF entsteht, wenn:

  • Die vordefinierte Konstante direkt verwendet wird: $x = INF;
  • Eine Berechnung den Bereich eines Floats überschreitet (ungefähr ±1.8e308): 1.0e308 * 10 ergibt INF.
  • Eine Division durch Gleitkomma-Null stattfindet oder eine Funktion wie log(0) negative Unendlichkeit zurückgibt.

Da sich diese Werte in späteren Berechnungen still fortpflanzen (INF + 1 ist immer noch INF), ermöglicht die Prüfung darauf, eine Berechnung abzufangen, die den zulässigen Bereich verlassen hat.

Grundlegende Verwendung

php— editable, runs on the server

Hier wird die Konstante INF der Variablen $number zugewiesen und dann is_infinite() aufgerufen, um sie zu prüfen. Die Bedingung ist wahr, also gibt das Skript The number is infinite aus.

Was ist und was ist nicht unendlich

Die folgende Wertetabelle zeigt genau, was is_infinite() zurückgibt. Beachten Sie, dass ein Überlauf INF erzeugt, während eine große, aber darstellbare Zahl das nicht tut:

<?php
var_dump(is_infinite(INF));               // bool(true)
var_dump(is_infinite(-INF));              // bool(true)
var_dump(is_infinite(PHP_FLOAT_MAX * 2)); // bool(true)  — overflow
var_dump(is_infinite(1 / 0.0001));        // bool(false) — large but finite
var_dump(is_infinite(42));                // bool(false) — an integer
var_dump(is_infinite(NAN));               // bool(false) — NAN is not infinite
?>

Der wesentliche Fallstrick: NAN (das Ergebnis von Operationen wie sqrt(-1)) ist nicht unendlich, daher ist is_infinite(NAN) false. Verwenden Sie is_nan(), um diesen Fall zu erkennen, und is_finite(), um zu bestätigen, dass ein Wert eine normale, verwendbare Zahl ist.

Ein praktisches Beispiel: Schutz vor Überlauf

Ein häufiger Anwendungsfall in der Praxis ist die Validierung des Ergebnisses einer Berechnung, bevor es gespeichert oder angezeigt wird. Wenn eine Operation zu INF übergelaufen ist, kann der Code reagieren, anstatt Unendlichkeit weiterzugeben:

<?php
function guardedMultiply(float $a, float $b): string
{
    $product = $a * $b;

    return is_infinite($product)
        ? "Result overflowed to infinity"
        : "Result: $product";
}

echo guardedMultiply(1.0e200, 1.0e200), PHP_EOL; // Result overflowed to infinity
echo guardedMultiply(2, 3), PHP_EOL;             // Result: 6
?>

Die Multiplikation von 1.0e200 mit sich selbst überschreitet den Float-Bereich, sodass das Produkt INF ist und die Schutzfunktion es abfängt. Der zweite Aufruf gibt einen normalen Wert zurück.

is_infinite() vs. verwandte Funktionen

PHP bündelt mehrere Float-Inspektions-Hilfsfunktionen. Wählen Sie diejenige, die zur Frage passt, die Sie stellen:

  • is_infinite() — ist der Wert INF oder -INF?
  • is_finite() — ist der Wert eine normale, endliche Zahl (nicht INF, -INF oder NAN)?
  • is_nan() — ist der Wert NAN?
  • is_float() — ist die Variable überhaupt vom Typ float?

Weitere numerische Hilfsfunktionen finden Sie in der PHP Math-Referenz.

Fazit

is_infinite() gibt true nur für INF und -INF zurück, wodurch Sie Gleitkomma-Überläufe und andere Operationen erkennen können, die Unendlichkeit erzeugen. Kombinieren Sie sie mit is_finite() und is_nan(), um das Ergebnis einer Float-Berechnung vollständig zu validieren, bevor Sie sich darauf verlassen.

Übungen

Übung
Was ist der Zweck der Funktion 'is_infinite()' in PHP?
Was ist der Zweck der Funktion 'is_infinite()' in PHP?
Was this page helpful?