PHP ne nécessite pas une déclaration explicite du type d'une variable. Le type d'une variable est déterminé par le contexte de l'utilisation de la variable. Par exemple, si vous assignez une chaîne de caractères à la variable var, var devient une chaîne de caractère. Si vous assignez un nombre entier à var, elle devient un "integer".
Un exemple de conversion automatique de type est l'opérateur '+'. Si une des opérandes est de type "double", alors toutes les opérandes sont évaluées comme des variables de type "double" et le résultat est de type "double". Sinon, toutes les opérandes sont évaluées comme des variables de type "integer" et le résultat sera du type "integer". Il est à noter que cela NE CHANGE PAS le type des opérandes. Le seul changement est la manière dont les opérandes sont évaluées.
$foo = "0"; // $foo est une chaîne de caractères (ASCII 48) $foo++; // $foo est la chaîne de caractères "1" (ASCII 49) $foo += 1; // $foo est maintenant du type "integer" (2) $foo = $foo + 1.3; // $foo est maintenant du type "double" (3.3) $foo = 5 + "10 Little Piggies"; // $foo est du type "integer" (15) $foo = 5 + "10 Small Pigs"; // $foo est du type "integer" (15)
Si les deux derniers exemples vous semblent obscures, voir le paragraphe Conversion de type (chaîne de caractères).
Si vous voulez forcer une variable a être évaluée avec un certain type, lisez le paragraphe Conversion de type ci-dessous. Si vous voulez changer le type d'une variable, interressez vous à la fonction settype().
La conversion de type en PHP fonctionne de la même manière qu'en C: le nom du type désiré est écrit entre parenthèses devant la variable à "caster".
$foo = 10; // $foo is est du type "integer" $bar = (double) $foo; // $bar est du type "double"
Les conversions authorisées sont:
(int), (integer) - conversion vers le type "integer"
(real), (double), (float) - conversion vers le type "double"
(string) - conversion vers le type "string"
(array) - conversion vers le type "array"
(object) - conversion vers le type "object"
Il est à noter que les tabulations et les espaces sont authorisés à l'intérieur des parenthèses, donc les lignes suivantes sont équivalentes:
$foo = (int) $bar; $foo = ( int ) $bar;
|