Ganzzahlen (Integer) Ein int ist eine Zahl aus der Menge ℤ = {..., -2, -1, 0, 1, 2, ...}. &reftitle.seealso; Gleitkommazahlen Rechnen mit beliebiger Genauigkeit (BCMath) Rechnen mit ganzen Zahlen mit beliebiger Genauigkeit (GMP) Syntax Ints können in dezimaler (Basis 10), hexadezimaler (Basis 16), oktaler (Basis 8) oder binärer (Basis 2) Schreibweise angegeben werden. Der Negationsoperator kann verwendet werden, um einen negativen int anzugeben. Um die oktale Schreibweise zu verwenden, wird der Zahl eine 0 (Null) vorangestellt. Seit PHP 8.1.0 kann der oktalen Schreibweise auch ein 0o oder 0O vorangestellt werden. Um die hexadezimale Schreibweise zu verwenden, muss der Zahl 0x vorangestellt werden, für die binäre Schreibweise 0x. Um die Lesbarkeit von Integer-Literalen zu verbessern, dürfen diese seit PHP 7.4.0 Unterstriche (_) zwischen den Ziffern enthalten. Diese Unterstriche werden von PHPs Scanner entfernt. Integer-Literale ]]> Seit PHP 8.1.0 ist die Struktur für int-Literale formal wie folgt definiert (vorher waren die Oktalpräfixe 0o und 0O nicht erlaubt, und vor PHP 7.4.0 waren die Unterstriche nicht erlaubt): Die Größe eines Werts vom Typ int ist plattformabhängig, wobei der Maximalwert normalerweise bei etwa zwei Milliarden liegt (das sind 32 Bit mit Vorzeichen). Bei 64-Bit-Plattformen liegt der Maximalwert normalerweise bei etwa 9E18. PHP unterstützt keine vorzeichenlosen ints. Die Größe von int kann mit der Konstante PHP_INT_SIZE ermittelt werden, der maximale Wert mit der Konstante PHP_INT_MAX und der minimale Wert mit der Konstante PHP_INT_MIN. Integer-Überlauf Wenn eine Zahl außerhalb der Grenzen des Typs int liegt, interpretiert PHP sie stattdessen als float. Auch eine Operation, die eine Zahl außerhalb der Grenzen des Typs int ergibt, gibt stattdessen einen Float zurück. Integer-Überlauf ]]> Integer-Division In PHP gibt es keinen Operator für die Division von int. Dafür kann die Funktion intdiv verwendet werden. Das Ergebnis von 1/2 ist der Float-Wert 0.5. Der Wert kann in einen int umgewandelt werden, um ihn auf Null zu runden. Alternativ dazu kann die Funktion round verwendet werden, die eine feinere Kontrolle über das Runden ermöglicht. Divisionen ]]> Umwandlung in Integer Um einen Wert explizit in int umzuwandeln, kann entweder (int) oder (integer) verwendet werden. In den meisten Fällen ist das jedoch nicht nötig, weil ein Wert automatisch umgewandelt wird, wenn ein Operator, eine Funktion oder eine Kontrollstruktur ein Argument vom Typ int benötigt. Ein Wert kann auch mit der Funktion intval in int umgewandelt werden. Wenn eine Ressource in int umgewandelt wird, dann ist das Ergebnis die eindeutige Nummer der Ressource, die der Ressource von PHP zur Laufzeit zugewiesen wird. Siehe auch Typumwandlung. Von <link linkend="language.types.boolean">Booleans</link> &false; ergibt 0 (Null) und &true; ergibt 1 (Eins). Von <link linkend="language.types.float">Gleitkommazahlen</link> Bei der Umwandlung von float nach int wird die Zahl abgerundet. Seit PHP 8.1.0 wird davon abgeraten, einen nicht-ganzzahligen &float; in &integer; umzuwandeln, weil dabei die Genauigkeit abnimmt. Umwandlung von Float ]]> Wenn der Float-Wert außerhalb der Grenzen von int liegt (auf 32-bit-Plattformen normalerweise +/- 2.15e+9 = 2^31 und auf 64-bit-Plattformen +/- 9.22e+18 = 2^63), ist das Ergebnis undefiniert. Das liegt daran, dass der Typ float nicht genau genug ist, um ein exaktes Ergebnis für den Typ int zu liefern. In diesem Fall wird keine Warnung und nicht einmal ein Hinweis ausgegeben! Wenn NaN, Inf und -Inf in int umgewandelt werden, ergibt dies immer Null. Eine unbekannte Bruchzahl sollte niemals in int umgewandelt werden, weil dies manchmal zu unerwarteten Ergebnissen führen kann. ]]> Siehe auch den Warnhinweis zur Genauigkeit von Gleitkommazahlen. Von einer Zeichenkette Wenn eine Zeichenkette numerisch ist oder numerisch beginnt, wird sie in den entsprechenden Integer-Wert umgewandelt, andernfalls wird sie in Null (0) umgewandelt. Von <type>NULL</type> &null; wird immer in Null (0) umgewandelt. Von anderen Typen Für andere Typen ist das Verhalten bei der Umwandlung in int undefiniert. Es ist nicht empfehlenswert, sich auf ein beobachtetes Verhalten zu verlassen, da es sich ohne Vorankündigung ändern kann.