Variablentypänderungen (Jonglieren)
PHP erfordert (oder unterstützt) nicht die Angabe seines Variablentyps in der deklarierten Variablen; der Typ einer Variablen wird durch den Kontext bestimmt, in dem die Variable verwendet wird, d. h. wenn Sie einer Variablen var den Wert zuweisen von var wird zu einer String-Variablen. Wenn Sie var eine Ganzzahl zuweisen, wird sie zu einer Ganzzahlvariablen.
Ein Beispiel für die automatische Konvertierung von Variablentypen durch PHP ist der Additionsoperator „+“. Wenn ein Operand ein Double ist, werden alle Operanden als Double ausgewertet und das Ergebnis ist ebenfalls ein Double. Andernfalls werden die Operanden als Ganzzahlen betrachtet und das Ergebnis ist eine Ganzzahl. Beachten Sie, dass sich dies nicht auf den Variablentyp jedes Operanden selbst auswirkt. Die einzige Änderung besteht darin, wie die Operanden während der Berechnung verarbeitet werden.
$foo = "0"; // $foo ist ein String mit dem Wert „0“ (ASCII 48)
$foo++; // $foo ist ein String mit dem Wert „1“ (ASCII 49)
$foo += 1; // $foo ist jetzt eine Ganzzahl (2)
$foo = $foo + 1.3; // $foo ist jetzt ein Double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo ist eine Ganzzahl (15)
$foo = 5 + „10 Small Pigs“ // $foo ist eine Ganzzahl (15)
Wenn Sie der Meinung sind, dass die letzten beiden Ausdrücke im obigen Beispiel etwas seltsam aussehen, sehen Sie sich bitte den Abschnitt „String-Konvertierung“ an.
Wenn Sie erzwingen möchten, dass eine Variable als fester Typ ausgewertet wird, lesen Sie den Abschnitt „Casting“. Wenn Sie den Typ einer Variablen ändern möchten, lesen Sie bitte die Beschreibung der Funktion „settype()“.
Bestimmen Sie den Typ einer Variablen
Da PHP die Variablentypen selbst bestimmt und sie im Allgemeinen nach Bedarf umwandelt, ist der Typ einer bestimmten Variablen nicht immer offensichtlich. PHP enthält Funktionen, um den Typ dieser Variablen herauszufinden. Diese Funktionen sind gettype(), is_long(), is_double(), is_string(), is_array() und is_object().
Typguss
Die Typerzwingung in PHP ist ungefähr die gleiche wie in der C-Sprache: Schreiben Sie den erforderlichen Typ in Klammern vor die Variable, die erzwungen werden soll.
$foo = 10; // $foo ist eine Ganzzahl
$bar = (double) $foo; // $foo ist ein Double
Folgende Zwangsmaßnahmen sind erlaubt:
(int), (integer) – in Ganzzahl umwandeln
(real), (double), (float) – zum Verdoppeln zwingen
(string) – zum String zwingen
(Array) – zum Array zwingen
(Objekt) – zum Einspruch zwingen
Beachten Sie, dass Tabulatoren und Leerzeichen in Klammern zulässig sind. Daher sind die folgenden Anweisungen gleichwertig:
$foo = (int) $bar;
$foo = ( int ) $bar;
String-Konvertierung
Wenn eine Zeichenfolge als numerischer Wert ausgewertet wird, werden Ergebnis und Typ wie unten beschrieben bestimmt.
Wenn diese Zeichenfolge die Zeichen „.“, „e“ oder „E“ enthält, wird sie als Variable vom Typ Double behandelt, andernfalls wird sie als Ganzzahl behandelt.
Der Wert dieser Zeichenfolge wird durch das Präfix bestimmt. Wenn die Zeichenfolge mit gültigen numerischen Daten beginnt, sind die numerischen Daten der Wert, anhand dessen die Zeichenfolge ausgewertet wird. Andernfalls ist der Wert Null. Gültige numerische Daten folgen der folgenden Notation, gefolgt von einer oder mehreren Ziffern (einschließlich eines Dezimalpunkts) und einem optionalen Exponenten. Der Exponent wird durch eine oder mehrere Ziffern gefolgt von „e“ oder „E“ gebildet.
$foo = 1 + "10.5"; // $foo ist ein Double (11.5)
$foo = 1 + "-1.3e3"; // $foo ist ein Double (-1299)
$foo = 1 + "bob -1.3 e3"; // $foo ist eine Ganzzahl (1)
$foo = 1 + "bob3"; // $foo
ist eine Ganzzahl (1) $foo = 1 + "10 Small Pigs"; // $foo ist eine Ganzzahl ( 11)
$foo = 1 + „10 Little Piggies“; // $foo ist eine Ganzzahl (11)
// Diese Zeichenfolge enthält das Zeichen „e“;
Weitere Informationen finden Sie im Unix-Handbuchabschnitt zu strtod(3).