Integer Typen

Ein Integer ist eine Nummer aus der Menge Z = { ... , -2 , -1 , 0 , 1 , 2 , .. . } .

Siehe auch : Ganzzahlen beliebiger Länge und Fließkomma-Zahlen

Syntax

Ganzzahlen können in dezimaler ( 10-basierter) , hexadezimaler (16-basierter ) oder oktaler (8-basierter ) Schreibweise angegeben werden , wahlweise mit einem vorangestellten Zeichen ( - oder + ) .

Wenn Sie die oktale Schreibweise verwenden , müssen Sie die Zahl mit einer vorangestellten Null 0 schreiben ; in hexadezimaler Schreibweise müssen Sie vor die Zahl ein 0x schreiben .

Beispiel 7-1 . Integer Literale

 
$a

 
=

 
1234

 
;

 
/

 
/

 
Dezimalzahl

 
$a

 
=

 
-123

 
;

 
/

 
/

 
eine

 
negative

 
Zahl

 
$a

 
=

 
0123

 
;

 
/

 
/

 
Oktalzahl

 
(entspricht

 
83

 
dezimal

 
)

 
$a

 
=

 
0x1A

 
;

 
/

 
/

 
Hexadezimalzahl

 
(entspricht

 
26

 
dezimal

 
)



Die Größe eines Integer-Wertes ist plattformabhängig, ein Maximalwert von ungefähr zwei Milliarden ist jedoch üblich. (Vorzeichenbehafteter 32-Bit-Wert). PHP unterstützt keine vorzeichenlose Integer-Werte.

Integer Überlauf

Wenn Sie eine Zahl jenseits der Grenzen des Typs Integer angeben , wird diese stattdessen als Typ float Wenn Sie eine Zahl jenseits der Grenzen des Typs Integer angeben , wird diese stattdessen als Typ float interpretiert . Wenn Sie eine Operation ausführen , deren Ergebnis eine Zahl jenseits der Grenzen des Typs Integer ist , wird ebenso eine Zahl vom Typ float zurückgegeben .

 
$large_number

 
=

 
2147483647

 
;

 
var_dump($large_number)

 
;

 
/

 
/

 
Ausgabe

 
:

 
int(2147483647

 
)

 
$large_number

 
=

 
2147483648

 
;

 
var_dump($large_number)

 
;

 
/

 
/

 
Ausgabe

 
:

 
float(2147483648

 
)

 
/

 
/

 
das

 
gilt

 
auch

 
für

 
Integers

 
in

 
hexadezimaler

 
Schreibweise

 
:

 
var_dump

 
(

 
0x80000000

 
)

 
;

 
/

 
/

 
Ausgabe

 
:

 
float(2147483648

 
)

 
$million

 
=

 
1000000

 
;

 
$large_number

 
=

 
50000

 
*

 
$million

 
;

 
var_dump($large_number)

 
;

 
/

 
/

 
Ausgabe

 
:

 
float(50000000000

 
)



Warnung

Bedauerlicherweise gab es einen Bug in PHP , der die korrekte Funktionsweise verhinderte , wenn negative Zahlen verwendet wurden . Ein Beispiel : Bei der Ausführung von -50000 * $million war das Ergebnis -429496728 . Sind beide Operanden positiv gibt gibt es keine Probleme .

Dieses Problem ist in PHP 4.1.0 behoben .



In PHP gibt es keinen Operator für Integer Divisonen . 1 / 2 ergibt float 0.5 .

 
var_dump(

 
25

 
/

 
7

 
)

 
;

 
/

 
/

 
Ausgabe

 
:

 
float(3.5714285714286

 
)





Umwandlung nach Integer

Um einen Wert ausdrücklich nach integer zu konvertieren benutzen Sie entweder die Umwandlung mittels ( int ) oder (integer ) . In den allermeisten Fällen ist es jedoch nicht notwendig die Umwandlung selbst vorzunehmen . Ein Wert wird automatisch konvertiert , falls ein Operator , eine Funktion oder eine Kontrollstruktur ein integer Argument erfordert .

Siehe auch Typ-Veränderung .

Von Booleans

FALSE ergibt 0 ( Null) , und TRUE ergibt 1 (eins ) .

Von Fließkomma-Zahlen

Bei der Umwandlung von float nach integer wird die Zahl in Richtung Null gerundet .

Wenn der float jenseits der Grenzen von integer liegt ( üblicherweise + / - 2.15e+9 = 2^31 ) , ist das Ergebnis nicht definiert , weil float nicht genug Präzision besitzt um ein genaues integer Ergebnis zu liefern . Keine Warnung , nicht einmal eine Notiz wird in diesem Fall ausgegeben .

Warnung

Wandeln Sie nie einen Teil eines Ausdrucks nach integer um , da dies manchmal zu unerwarteten Ergebnissen führen kann .

 
echo

 
(

 
int

 
)

 
(

 
(0.1+0.7

 
)

 
*

 
10

 
)

 
;

 
/

 
/

 
Ausgabe

 
:




 
7

 
!



Für mehr Informationen schauen Sie unter Warnung über float-Präzision nach.

Von Zeichenketten/ Strings

Siehe String Umwandlung

Von anderen Typen

Achtung

Das Verhalten bei der Umwandlung nach integer ist für andere Typen nicht definiert . Zum gegenwärtigen Zeitpunkt ist das Verhalten so , als ob der Wert zuerst nach boolean konvertiert wird . Auf jeden Fall sollten Sie sich auf dieses Verhalten nicht verlassen . Es kann sich ohne Ankündigung ändern .