Maison > Article > développement back-end > Discrimination de la conversion du type de données PHP
PHP ne nécessite pas (ni ne prend en charge) de définitions de type explicites dans les définitions de variables ; le type de variable est déterminé en fonction du contexte dans lequel la variable est utilisée. En d'autres termes, si vous attribuez une valeur de chaîne à la variable $var, $var devient une chaîne. Si vous attribuez un entier à $var, il devient un entier.
Un exemple de conversion automatique de type de PHP est l'opérateur d'addition "+". Si un opérande est float , alors tous les opérandes sont traités comme float et le résultat est également float . Sinon, les opérandes sont interprétés comme des entiers et le résultat est également un entier. Notez que cela ne change pas les types des opérandes eux-mêmes ; seule la façon dont les opérandes sont évalués et le type de l'expression elle-même est modifié.
<?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) ?>
Si les deux exemples ci-dessus semblent bizarres, consultez Conversion de chaînes en nombres.
Si vous souhaitez forcer l'évaluation d'une variable comme un certain type, consultez la section Type Coercition. Si vous souhaitez modifier le type d'une variable, consultez settype().
Si vous souhaitez tester l'un des exemples de cette section, vous pouvez utiliser la fonction var_dump().
Remarque :
Le comportement de la conversion automatique en tableau n'est actuellement pas défini.
De plus, puisque PHP prend en charge l'accès aux indices de chaîne en utilisant la même syntaxe que les indices de tableau, l'exemple suivant est valide dans toutes les versions de PHP :
<?php $a = 'car' ; // $a is a string $a [ 0 ] = 'b' ; // $a is still a string echo $a ; // bar ?>
Type cast
La coercition de type en PHP est très similaire à celle en C : la variable à convertir est précédée du type cible mis entre parenthèses.
<?php $foo = 10 ; // $foo is an integer $bar = (boolean) $foo ; // $bar is a boolean ?>
Les conversions autorisées sont :
(int), (integer) - converti en entier
( bool), (boolean) - Convertir en Boolean boolean
(float), (double), (real) - Convertir en float de type à virgule flottante
(string) - Convertir en chaîne string
(array) - Convertir en tableau tableau
( object) - Convertir en objet objet
(non défini) - Convertir en NULL (PHP 5)
(binaire) Convertir et conversion de préfixe b le support était nouveau pour PHP 5.2.1.
Notez que les espaces et les tabulations sont autorisés entre parenthèses, les deux exemples suivants ont donc la même fonctionnalité :
<?php $foo = (int) $bar ; $foo = ( int ) $bar ; ?>
Convertir les chaînes littérales et les variables en chaînes binaires :
<?php $binary = (binary) $string ; $binary = b"binary string" ; ?>
Remarque :
Au lieu de convertir la variable en chaîne, vous pouvez la placer entre guillemets :
<?php $foo = 10 ; // $foo 是一个整数 $str = " $foo " ; // $str 是一个字符串 $fst = (string) $foo ; // $fst 也是一个字符串 // 输出 "they are the same" if ( $fst === $str ) { echo "they are the same" ; } ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!