is_real()
Die Funktion is_real() in PHP 7 prüft, ob eine Variable ein Float ist. Sie ist ein veralteter Alias für is_float().
Einführung
is_real() ist ein Alias von is_float(). Beide prüfen, ob eine Variable einen Gleitkommazahl-Wert enthält (PHP verwendet einen einzigen float-Typ — „real" und „double" sind nur andere Bezeichnungen für dasselbe). Die Funktion gibt einen boolean zurück: true für Floats, false für alles andere.
Der Name stammt vom mathematischen Begriff reelle Zahl. Da PHP bereits das klarere, standardisiertere is_float() besitzt, wurde der Alias is_real() in PHP 7.4 als veraltet markiert und in PHP 8.0 vollständig entfernt. Auf einer modernen PHP-Installation führt der Aufruf von is_real() zu einem fatalen Fehler: Error: Call to undefined function.
Diese Seite soll helfen, Legacy-Code zu verstehen, der noch is_real() verwendet — in neuem Code sollte jedoch immer is_float() genutzt werden.
Syntax
is_real(mixed $value): bool$value— die zu prüfende Variable.- Rückgabe —
true, wenn$valuevom Typfloatist, andernfallsfalse.
Hinweis: Diese Funktion prüft nur den Typ. Ein numerischer string wie "3.14" ist ein string und kein float, daher wird false zurückgegeben. Um auch numerische Strings zu akzeptieren, verwende is_numeric().
Beispiel: Verhalten von is_real()
<?php
$float = 3.14;
$whole = 2.0; // still a float, despite the round value
$integer = 5;
$text = "3.14"; // a numeric string, not a float
var_dump(is_real($float)); // bool(true)
var_dump(is_real($whole)); // bool(true)
var_dump(is_real($integer)); // bool(false) — this is an int
var_dump(is_real($text)); // bool(false) — this is a string
?>2.0 ist ein Float, obwohl sein Wert eine ganze Zahl ist — daher besteht es die Prüfung. Die ganze Zahl 5 und der string "3.14" schlagen beide fehl, weil is_real() den zugrunde liegenden Typ prüft, nicht den Wert.
Beim direkten Ausgeben des Ergebnisses ist Vorsicht geboten: echo wandelt true in "1" und false in einen leeren string um, was so aussehen kann, als ob nichts passiert wäre. Verwende var_dump() beim Debuggen, um true/false klar zu erkennen.
Das moderne Äquivalent
Das Ersetzen von is_real() ist ein Eins-zu-eins-Austausch — der Aufruf wird einfach umbenannt:
<?php
$price = 19.99;
if (is_float($price)) {
echo "It's a float.";
} else {
echo "Not a float.";
}
// Output: It's a float.
?>Wenn Code gewartet wird, der auf PHP 8 laufen muss, aber noch is_real() referenziert, ist folgender sicherer Shim geeignet:
<?php
if (!function_exists('is_real')) {
function is_real($value): bool {
return is_float($value);
}
}
?>Verwandte Typprüfungsfunktionen
PHP enthält eine Familie von is_*-Funktionen für Laufzeit-Typprüfungen:
is_float()— der aktuelle Name; stattis_real()verwenden.is_int()— prüft auf ganze Zahlen.is_string()— prüft auf strings.is_numeric()—truefür Zahlen und numerische strings.gettype()— gibt den Typnamen als string zurück.
Fazit
is_real() war ein Alias für is_float() und ist seit PHP 8.0 nicht mehr verfügbar. Es prüft, ob ein Wert vom Typ float ist, und gibt true oder false zurück. In neuem Code sollte immer direkt is_float() aufgerufen werden; is_numeric() ist die richtige Wahl, wenn auch numerische strings berücksichtigt werden sollen.