is_integer()
Die Funktion is_integer() ist ein Alias von is_int() in PHP und prüft, ob eine Variable ein Integer ist. Erfahren Sie mehr über Anwendung und Besonderheiten.
Einführung
is_integer() ist ein Alias von is_int() in PHP. Es prüft, ob der Typ einer Variable integer ist, und gibt einen boolean zurück. Ein Integer in PHP ist eine ganze Zahl ohne Nachkommastellen, wie z. B. -5, 0 oder 42.
Diese Seite beschreibt, was is_integer() prüft (und was es bewusst nicht prüft), die Fallstricke bei numerischen Strings und welchen Namen Sie in neuem Code tatsächlich verwenden sollten.
Verwenden Sie stattdessen
is_int().is_integer()undis_int()sind dieselbe Funktion, daher ist keine von beiden entfernt oder veraltet. Allerdings istis_int()der kanonische Name, der im PHP-Handbuch und in modernen Codebasen durchgängig verwendet wird. Bevorzugen Sie ihn für Konsistenz.
Syntax
is_integer(mixed $value): boolDie Funktion nimmt ein Argument entgegen, $value, die zu prüfende Variable, und gibt true nur zurück, wenn $value vom Typ int ist, und false für jeden anderen Typ.
Anwendungsbeispiel
$var1 enthält den Integer 42, daher gibt der Aufruf true zurück, was echo als 1 ausgibt. $var2 ist ein String, daher gibt der Aufruf false zurück, was echo als nichts (einen leeren String) ausgibt. Um die booleschen Werte deutlich zu sehen, verwenden Sie var_dump() anstelle von echo.
Es prüft den Typ, nicht den Wert
Dies ist die häufigste Quelle von Verwirrung: is_integer() betrachtet den Typ der Variable. Daher ist ein String wie "42" oder ein Float wie 42.0 kein Integer, auch wenn er wie einer aussieht.
<?php
var_dump(is_integer(42)); // bool(true)
var_dump(is_integer("42")); // bool(false) — numeric string, not int
var_dump(is_integer(42.0)); // bool(false) — float, not int
var_dump(is_integer(true)); // bool(false) — bool, not int
var_dump(is_integer(null)); // bool(false)
var_dump(is_integer(PHP_INT_MAX)); // bool(true)
?>Wenn Sie numerische Strings akzeptieren müssen (z. B. Werte aus $_GET, $_POST oder einer CSV-Datei), verwenden Sie is_numeric() oder führen Sie eine Konvertierung/Validierung mit intval() durch.
Wann sollte ich das verwenden?
- Absichern eines Funktionsarguments, bevor Sie ganzzahlige Berechnungen durchführen, z. B. einen Wert als Array-Index oder Schleifengrenze verwenden.
- Unterscheiden von Typen nach einer Funktion, die gemischte Typen zurückgeben kann (ein gängiges Muster bei
strpos(), das entweder einenint-Offset oderfalsezurückgibt):
<?php
$pos = strpos("hello world", "world");
if (is_integer($pos)) {
echo "Found at index $pos\n"; // Found at index 6
} else {
echo "Not found\n";
}
?>Verwandte Typprüfungsfunktionen
| Funktion | Gibt true zurück für |
|---|---|
is_int() | Ein int (kanonischer Name; identisch mit is_integer()) |
is_float() | Ein float (z. B. 3.14, 42.0) |
is_string() | Einen string, einschließlich "42" |
is_numeric() | Einen int, float oder numerischen string |
gettype() | (gibt den Typnamen zurück, keinen bool) |
Lesen Sie das Kapitel PHP-Datentypen für einen vollständigen Überblick darüber, wie PHP Werte kategorisiert.
Fazit
is_integer() ist ein Alias von is_int(), der true nur zurückgibt, wenn eine Variable vom Typ int ist. Denken Sie daran, dass es den Typ und nicht den Wert prüft, sodass numerische Strings und Floats false zurückgeben. Bevorzugen Sie für neuen Code den kanonischen is_int(); greifen Sie auf is_numeric() zurück, wenn numerische Strings ebenfalls zählen sollen.