is_long()
Die Funktion is_long() in PHP prüft, ob eine Variable den Datentyp Integer hat. Sie gibt true zurück, wenn die Variable ein Integer ist, sonst false.
Einführung
is_long() ist eine eingebaute PHP-Funktion, die prüft, ob eine Variable einen Wert vom Datentyp Integer enthält. Sie gibt true zurück, wenn die Variable ein Integer ist, andernfalls false.
Das Wichtigste zu verstehen ist, dass is_long() ein exakter Alias von is_int() ist: Beide Namen rufen dieselbe zugrunde liegende Funktion auf und verhalten sich identisch. Diese Seite erklärt, woher der Name is_long() stammt, wie er sich verhält und warum man in neuem Code generell is_int() bevorzugen sollte.
Warum der Name „is_long"?
Im C-Quellcode von PHP wird der Integer-Typ intern durch ein C-long dargestellt. Aufgrund dieser Geschichte stellt PHP drei austauschbare Namen für dieselbe Integer-Prüfung bereit:
is_int()— der kanonische, empfohlene Name.is_integer()— ein Alias für bessere Lesbarkeit.is_long()— ein Alias, der den internen C-Typnamen widerspiegelt.
Alle drei sind in aktuellem PHP (einschließlich PHP 8.x) verfügbar und geben für dieselbe Eingabe dasselbe Ergebnis zurück. Das PHP-Handbuch listet is_long() und is_integer() als Aliase von is_int() auf und empfiehlt is_int() für mehr Klarheit.
Grundlegende Syntax
is_long($variable); // identical to is_int($variable)Der Parameter $variable ist der zu prüfende Wert. Die Funktion gibt nur für einen tatsächlichen Integer-Wert true zurück, ohne Typumwandlung — numerische Strings und Floats geben false zurück.
Verwendungsbeispiel
Hier wird is_long() verwendet, um drei verschiedene Variablen zu testen:
bool(true)
bool(false)
bool(false)Nur $var1 ist ein echter Integer. Der numerische String "10" und der Float 3.14 geben beide false zurück, weil is_long() den tatsächlichen Typ prüft und den Wert niemals zuerst konvertiert. is_long() durch is_int() zu ersetzen würde hier exakt dieselbe Ausgabe erzeugen — das ist die Bedeutung von „Alias".
Werte nach Typ filtern
Da sie einen boolean zurückgibt, funktioniert is_long() direkt als Callback für Funktionen wie array_filter(). Das ist praktisch, um aus einem gemischten Array nur die echten Integer zu behalten:
Array
(
[0] => 10
[3] => 40
)array_filter() behält nur die echten Integer und verwirft den numerischen String "20" und den Float 30.5. Beachte, dass die ursprünglichen Array-Schlüssel (0 und 3) erhalten bleiben und nicht neu nummeriert werden.
Wichtige Hinweise
- Alias von
is_int():is_long()hat kein eigenes Verhalten. Es gibt keinen separaten „long"-Typ in PHP, der sich vomintunterscheidet; der Name spiegelt lediglich die interne C-Darstellung wider. - Noch verfügbar, aber nicht bevorzugt:
is_long()funktioniert in aktuellem PHP, aber das Handbuch empfiehltis_int()für bessere Lesbarkeit. Viele Style Guides und statische Analysetools markieren den Alias. - Keine Typumwandlung: wie
is_int()gibt esfalsefür numerische Strings ("123") und Floats mit ganzzahligem Wert (5.0) zurück. Um diese zu akzeptieren, verwendeis_numeric()oderfilter_var($var, FILTER_VALIDATE_INT).
Best Practices
is_int() in neuem Code bevorzugen
is_int(), is_integer() und is_long() sind austauschbar, also wähle einen und bleibe konsistent. Die Community-Konvention ist is_int() — es ist das kürzeste, das klarste und der Name, den die Dokumentation verwendet.
Redundante Vergleiche vermeiden
Da die Funktion bereits einen boolean zurückgibt, ist es unnötig, ihr Ergebnis in einem strikten Vergleich (=== true) einzuschließen. Schreibe einfach if (is_int($var)).
Verwandte Typprüfungsfunktionen
is_int()— die kanonische, empfohlene Integer-Prüfung.is_integer()— ein weiterer lesbarer Alias vonis_int().is_numeric()—truefür Integer, Floats und numerische Strings.is_float()— prüft auf Gleitkommazahlen.is_string()— prüft auf String-Werte.
Fazit
is_long() ist schlicht ein alternativer Name für is_int(). Es führt eine strenge, umwandlungsfreie Integer-Prüfung durch und verhält sich identisch zu seinem bekannteren Gegenstück. Da der Alias keine Funktionalität hinzufügt und Leser verwirren kann, sollte man in neuem Code is_int() verwenden und is_long() nur zum Verständnis älterer Codebasen heranziehen, die noch auf diesen Namen angewiesen sind.