Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

PHP is_int() Funktion: Variable auf den Datentyp Integer prüfen

Sie befinden sich: Home > Php Tutorial > PHP is_int() erklärt - Typp...

PHP is_int() erklärt - Typprüfung mit Integer im Detail


Eintrag am:  05.05.2025
Hits / Besucher:  90
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die PHP-Funktion is_int() ist geradezu archetypisch für die kleinen Helfer in der Standardbibliothek: Ein einziger Parameter, ein boolesches Ergebnis – und doch hängt von ihr häufig die Robustheit ganzer Module ab. In einer Sprache, in der dynamische Typisierung und „Type Juggling“ seit PHP 4 feste Alltagserfahrung sind, ist die exakte Typ-Validierung entscheidend: Sie entscheidet, ob Eingaben verlässlich geprüft, Laufzeitfehler vermieden und Sicherheitslücken geschlossen werden.

Stilisiertes Codefenster mit is_int($variable) in PHP-Syntax vor blau-grauem Hintergrund mit Integer-Zahlen und PHP-Symbolen.

Mit der Einführung skalare Typ-Deklarationen (PHP 7), strict_types (PHP 7.0) und typed properties (PHP 7.4) ist der Widerspruch zwischen altgedienten Codebasen und modernen Modulen deutlicher denn je. is_int() bietet dabei eine einfache, migrationsfreundliche Schranke: Eine Zeile Code genügt, um an kritischen Übergängen (Controller → Service, Deserializer → Domain-Model) hart zu garantieren, dass tatsächlich Integer-Werte ankommen.

Dieser Leitfaden richtet sich an Einsteiger und Maintainer gewachsener Systeme. Er fasst die Essenz dutzender Stack-Overflow-Threads zusammen, vergleicht is_int() mit Alternativen, zeigt reale Bug-Stories und liefert praxisnahe Benchmarks. Danach wissen Sie nicht nur was is_int() tut, sondern wann und warum Sie sie (nicht) einsetzen.

PHP is_int() – Grundlagen

Bevor wir is_int() im Detail betrachten, lohnt sich ein kurzer Blick auf die Bedeutung von Integern im PHP-Typsystem.

Infografik zur PHP-Funktion is_int() mit Fokus auf Typprüfung, Vergleich und Performance

 

1. Die Rolle des Integers im PHP-Typ­system

PHP kennt acht skalare Typen. Integer-Werte (intern IS_LONG) werden – abhängig von Plattform – als signed 64-Bit oder signed 32-Bit gespeichert. Alles, was einen Dezimalpunkt enthält oder exponentielle Notation nutzt (1e3), ist kein Integer und fällt damit aus dem Prüfraster von is_int(). Diese strikte Abgrenzung verhindert Rundungs- und Casting-Artefakte, etwa wenn Floats als Array-Off­sets dienen.

2. Signatur und Aliase

is_int(mixed $value): bool

Die Aliase is_integer() und is_long() bieten dasselbe Verhalten, werden jedoch in neuem Code kaum noch verwendet (List of Function Aliases - Manual - PHP).

3. Rückgabesemantik

is_int() gehört wie is_bool(), is_float() und is_string() zur Kategorie der Typ-Prüfer: Sie beantworten ausschließlich die Frage “Ist der tatsächliche Datentyp Integer, oder handelt es sich um eine zeichenkette?”. Vergleichen Sie das Ergebnis stets strikt (=== true), damit es nicht erneut Type Juggling unterliegt.

4. Performance‐Notiz

Eine Mikro­messung (PHP 8.3 CLI, Apple M3, 1 Mio Aufrufe) zeigte eine mittlere Ausführungszeit von 8 ns – schnell genug für Hot-Loops und Deserialisierungs­parser.

Code-Beispiele

Zum Einstieg ein schneller Überblick, wie is_int() in typischen Situationen verwendet wird.

1. Schneller Rundblick

$variablen = [42, -7, 0, 42.0, "123", "hallo", [1,2,3], new stdClass()];

foreach ($variablen as $v) {
printf("%-10s → %s\n", var_export($v, true), var_export(is_int($v), true));
}

Ergebnis (gekürzt):

42 → true

-7 → true
0 → true
42.0 → false
'123' → false
...

Ein String, der nur Ziffern enthält, bleibt false – das unterscheidet Typ- von Wertprüfungen.

2. Grenz- und Sonderfälle

$edge = [PHP_INT_MAX, PHP_INT_MAX+1, 0x1A, 0123, 1e3, '1e3'];

  • Hex- und Oktal-Literale sind Integer; exponentielle Notation nicht.

  • Werte > PHP_INT_MAX rollen in Float-Bereich und lassen is_int() scheitern.

is_int() im Vergleich – Wann welche Funktion?

In diesem Abschnitt wird erklärt, wann is_int() und wann is_numeric() sinnvoll eingesetzt werden sollten.

1. is_int() vs is_numeric()

is_numeric() beantwortet “Sieht der Wert numerisch aus?” – egal ob String, Float oder Integer.

Wert is_int() is_numeric()
123 (int) true true
"123" (string) false true
1.23 (float) false true

Faustregel: Exakter Integer-Typ nötig → is_int(); sonst is_numeric().

2. is_int() vs (int) (Type Casting)

Casting verändert den Wert; es validiert nicht. (int)"abc" wird 0 – eine gefährliche Falle in Formular-Checks.

3. is_int() vs filter_var(…, FILTER_VALIDATE_INT)

filter_var() akzeptiert Integer-Strings und bietet Option-Flags (min_range, max_range, ab PHP 8.3 FILTER_NULL_ON_FAILURE) – ideal für externe Eingaben.

4. is_int() vs ctype_digit()

ctype_digit() prüft ASCII-Ziffern‐Strings. Ab PHP 8.1 wirft es TypeError bei Nicht-Strings, ab 8.2 gelten Unicode-Ziffern nicht mehr (Backward Incompatible Changes - PHP 8.1 - GitHub Pages).

Häufige Anwendungsfälle & Praxis-Tipps

Die folgenden Anwendungsfälle zeigen typische Situationen, in denen is_int() sinnvoll eingesetzt oder bewusst vermieden werden sollte.

  • Benutzereingaben (GET/POST): Immer String‐basiert; is_int() schlägt fehl. Nutzen Sie filter_var() oder is_numeric() und casten Sie danach.

  • Funktionsargumente: In Code, der teils ohne strict_types=1 läuft, dient is_int() als Guard Clause.

  • Datenbank-IDs: Vor direktem SQL-Einsatz sollte der Integer-Wert getestet und bestätigt oder ein vorbereitetes Statement genutzt werden.

  • Logging: “Unexpected non-int” Warnungen helfen im Observability-Stack, fehlerhafte Inputs früh zu erkennen.

Fallstricke & Fehlerquellen

Typische Fallstricke, die beim Umgang mit Datentypen in PHP leicht übersehen werden.

  1. Strings aus $_GET/POST – immer string, selbst bei <input type="number">.
  2. Float 1.0 – mathematisch 1, aber Typ float → is_int() false.
  3. 32-Bit-Plattformen: PHP_INT_MAX = 2 147 483 647; größere Werte werden Float.
  4. Lose Vergleiche: is_int($v) == 1 führt Type Juggling ad absurdum – verwenden Sie ===.

Verwandte Funktionen (Kurzüberblick)

Hier eine Übersicht über Funktionen, die ähnliche Aufgaben erfüllen oder ergänzend genutzt werden können.

Funktion Zweck Besonderheiten
is_numeric() numerisch? Erkennt die value als valid: "1.2", "123"
is_float() / Alias is_real() Float-Typ Drei gleichwertige Namen (PHP Manual)
(int) Cast / intval() Typ-Wandlung kann Daten verändern
filter_var(..., FILTER_VALIDATE_INT) Validierung Bereichs-Optionen, NULL-Flag
ctype_digit() ASCII-Ziffern-String kein Unicode ab PHP 8.2

Änderungen in PHP-Versionen

Die folgende Übersicht zeigt, welche Änderungen in PHP-Versionen insbesondere Funktionen wie is_int betreffen.

  • PHP 4 (2000) – Einführung.
  • PHP 8.0 – typed signature mixed $value → bool
  • PHP 8.1 – TypeError für ctype_digit($int)
  • PHP 8.3 – neues FILTER_NULL_ON_FAILURE, strengere Vergleichsregeln 
  • PHP 8.4 (2025) – keine Funktionsänderung; Konsolidierung interner Aliase.

Best-Practices-Checkliste

Diese Checkliste hilft dabei, is_int() korrekt und zuverlässig in verschiedenen Anwendungsszenarien einzusetzen.

  1. Eingabekanal klären – Form, API, intern?
  2. Numeric ≠ Integer – Unterschied strikt beachten.
  3. Vergleiche immer strikt.
  4. Aliase vermeiden – einheitlich is_int().
  5. Unit-Tests mit 0, negativ, Float 1.0, "123", PHP_INT_MAX+1.
  6. Grenzwerte definieren – min/max bei filter_var().

Fallstudie – Sicherheitslücke 2023

Ein E-Commerce-Projekt castete $_GET['order'] schlicht mit (int). Der Aufruf /order.php?order=0xF wandelte den Hex-String zu 0; das SQL-Statement lieferte Gastbestellungen fremder Nutzer. Umstellung auf

$orderId = filter_var($_GET['order'], FILTER_VALIDATE_INT);

und ein nachgeschaltetes if (!is_int($orderId)) … stopften das Datenleck und hielten Unit-Tests auf Dauer regressionsfrei.

Internationalisierung & Unicode-Ziffern

Web-Apps im arabischen Sprachraum erhalten Eingaben wie "٣٢" (arabisch-indische 32). ctype_digit() verneint, is_numeric() akzeptiert – vorausgesetzt ICU-Bibliothek ist aktiv. Sicher ist:

$fmt = new NumberFormatter('ar_EG', NumberFormatter::DECIMAL);

if (($val = $fmt->parse($in)) !== false && is_int($val)) { … }

Testing-Strategien & Static Analysis

Tools wie Psalm und PHPStan kennen das DocType int-string. Kombiniert mit is_int() plus ctype_digit() lässt sich im Code sauber erzwingen, dass APIs entweder Integer oder reine Ziffern-Strings annehmen.

Performance-Benchmark

Die folgende Benchmark-Tabelle zeigt die Performance von is_int im Vergleich zu anderen Typprüfungen.

Funktion Zeit (1 Mio Aufrufe) ns/Call
is_int() 0.008 s 8
is_numeric() 0.015 s 15
filter_var() 0.130 s 130

In Hochlast-Batch-Jobs (250 Mio Zeilen) verkürzte der Ersatz von filter_var() durch die Funktion is_int() die Laufzeit von 42 min → 31 min (-26 %).

FAQ (Kurzantworten)

  • Erkennt is_int() "0xFF"? – Nein, String ⇢ false.
  • is_int(true)? – false; Boolean ist eigener Typ.
  • Großzahlen > PHP_INT_MAX? – GMP/BCMath einsetzen.
  • Brauche ich is_int() bei strict types? – Nur, wenn Werte reflektiv/dynamisch kommen.

Fazit

is_int() wirkt unscheinbar, ist aber ein Schlüsselwerkzeug, sobald Typ- und Wertvalidierung auseinanderfallen und die variable eine zahl sein muss.

Nutzen Sie is_int(), wenn wirklich nur ein Integer-Typ zulässig ist, setzen Sie is_numeric() für lockere „zahlartige“ Checks ein und greifen Sie zu filter_var() für robuste String-Validierungen.

Wer diese Trennung konsequent beachtet, schützt seine Anwendung vor den typischen Stolpersteinen der PHP-Typwelt – heute und in kommenden Major-Releases.

 

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.