Heim  >  Artikel  >  Backend-Entwicklung  >  Diskriminierung der PHP-Datentypkonvertierung

Diskriminierung der PHP-Datentypkonvertierung

怪我咯
怪我咯Original
2017-06-19 14:23:401324Durchsuche

PHP erfordert (oder unterstützt) keine expliziten Typdefinitionen in Variablendefinitionen; der Variablentyp wird basierend auf dem Kontext bestimmt, in dem die Variable verwendet wird. Mit anderen Worten: Wenn Sie der Variablen $var einen String-Wert zuweisen, wird $var zu einem String. Wenn Sie $var eine Ganzzahl zuweisen, wird daraus eine Ganzzahl.

Ein Beispiel für die automatische Typkonvertierung von PHP ist der Additionsoperator „+“. Wenn einer der Operanden float ist, werden alle Operanden als float behandelt und das Ergebnis ist ebenfalls float. Andernfalls werden die Operanden als Ganzzahl interpretiert und das Ergebnis ist ebenfalls eine Ganzzahl. Beachten Sie, dass sich dadurch nicht die Typen der Operanden selbst ändern; lediglich die Art und Weise, wie die Operanden ausgewertet werden, und der Typ des Ausdrucks selbst werden geändert.

<?php
$foo  =  "0" ;   // $foo 是字符串 (ASCII 48)
$foo  +=  2 ;    // $foo 现在是一个整数 (2)
$foo  =  $foo  +  1.3 ;   // $foo 现在是一个浮点数 (3.3)
$foo  =  5  +  "10 Little Piggies" ;  // $foo 是整数 (15)
$foo  =  5  +  "10 Small Pigs" ;      // $foo 是整数 (15)
?>

Wenn die beiden oben genannten Beispiele seltsam aussehen, lesen Sie den Abschnitt „Zeichenfolgen in Zahlen umwandeln“.

Wenn Sie erzwingen möchten, dass eine Variable als ein bestimmter Typ ausgewertet wird, lesen Sie den Abschnitt Typ Zwang. Wenn Sie den Typ einer Variablen ändern möchten, lesen Sie settype().

Wenn Sie eines der Beispiele in diesem Abschnitt testen möchten, können Sie die Funktion var_dump() verwenden.

Hinweis:

Das Verhalten der automatischen Konvertierung in ein Array ist derzeit nicht definiert.

Da PHP außerdem den Zugriff auf String-Indizes mit derselben Syntax wie Array-Indizes unterstützt, ist das folgende Beispiel in allen PHP-Versionen gültig:

<?php
$a     =  &#39;car&#39; ;  // $a is a string
$a [ 0 ] =  &#39;b&#39; ;    // $a is still a string
echo  $a ;        // bar
?>

Typumwandlung

Typerzwingung in PHP ist der in C sehr ähnlich: Der zu konvertierenden Variablen wird der Zieltyp in Klammern vorangestellt.

<?php
$foo  =  10 ;    // $foo is an integer
$bar  = (boolean)  $foo ;    // $bar is a boolean
?>

Die zulässigen Umwandlungen sind:

  • (int), (integer) – konvertiert in Integer

  • ( bool), (boolean) – Konvertieren in Boolean boolean

  • (float), (double), (real) – Konvertieren in Gleitkommatyp float

  • (string) – In String konvertieren string

  • (array) – In Array konvertieren array

  • ( Objekt) – In Objektobjekt konvertieren

  • (nicht gesetzt) ​​– In NULL konvertieren (PHP 5)

(binär) Konvertierung und b-Präfixkonvertierung Die Unterstützung war neu für PHP 5.2.1.

Beachten Sie, dass Leerzeichen und Tabulatoren in Klammern zulässig sind, sodass die folgenden beiden Beispiele dieselbe Funktionalität haben:

<?php
$foo  = (int)  $bar ;
$foo  = ( int )  $bar ;
?>

Zeichenfolgenliterale und -variablen in Binärzeichenfolgen konvertieren:

<?php
$binary  = (binary) $string ;
$binary  =  b"binary string" ;
?>

Hinweis:

Anstatt die Variable in eine Zeichenfolge umzuwandeln, können Sie sie in doppelte Anführungszeichen setzen:

<?php
$foo  =  10 ;             // $foo 是一个整数
$str  =  " $foo " ;         // $str 是一个字符串
$fst  = (string)  $foo ;  // $fst 也是一个字符串

// 输出 "they are the same"
if ( $fst  ===  $str ) {
    echo  "they are the same" ;
}
?>

Das obige ist der detaillierte Inhalt vonDiskriminierung der PHP-Datentypkonvertierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn