PHP ne nécessite pas de déclaration explicite
du type d'une variable. Le type d'une variable est
déterminé par le contexte d'utilisation.
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 entier.
Un exemple de convertisseur automatique de type est l'opérateur
'+'. Si un des opérandes est de type double, alors tous les
opérandes sont évalués comme des variables de
type double et le résultat est de type double. Sinon, tous
les opérandes sont évalués comme des variables
de type entier et le résultat sera du type entier. 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és.
Exemple 11-46. Conversion automatique
<?php $foo = "0"; // $foo est une chaîne de caractères (ASCII 48) $foo += 2; // $foo est maintenant du type entier (2) $foo = $foo + 1.3; // $foo est maintenant du type double (3.3) $foo = 5 + "10 Petits cochons"; // $foo est du type entier (15) $foo = 5 + "10 cochonnets"; // $foo est du type entier (15) ?>
|
|
Si les deux derniers exemples vous semblent obscurs ou si vous
voulez forcer une variable a être évaluée
avec un certain type, reportez-vous au paragraphe " Conversion de
types".
Si vous voulez forcer le type d'une variable, vous pouvez
vous reporter à la section concernant le
transtypage. Si
vous voulez changer le type d'une variable, utilisez la fonction
settype().
Note :
Le comportement de la conversion automatique en tableau
est en fait indéfini.
De plus, vu que PHP supporte l'indexation de chaînes via des offsets
en utilisant la même synthaxe que pour l'indexation des tableaux,
l'exemple suivant est valide, quelques soient les versions de PHP :
Exemple 11-47. Conversion automatique indéfinie
<?php $a = 'car'; // $a est une chaîne de caractères $a[0] = 'b'; // $a est toujours une chaîne de caractères echo $a; // affiche : bar ?>
|
|
Voyez la section concernant
l'accès aux caractères d'une chaîne
pour plus de détails.
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
à transtyper ("cast").
Exemple 11-48. Transtypage
<?php $foo = 10; // $foo est un entier $bar = (double) $foo; // $bar est un double ?>
|
|
Les conversions autorisées sont :
(int), (integer) - type entier
(bool), (boolean) - booléen
(double), (float), (real) -
type double
(string) - type chaîne de caractère
(array) - type tableau
(object) - type objet
Il est à noter que les tabulations et les espaces
sont autorisés à l'intérieur des
parenthèses, donc les lignes suivantes sont équivalentes :
Exemple 11-49. Transtypage et espaces
<?php $foo = (int) $bar; $foo = ( int ) $bar; ?>
|
|
Note :
Au lieu de transtyper une variable en chaîne, vous pouvez aussi
l'insérer entre deux guillemets doubles :
Exemple 11-50. Transtypage en chaîne
<?php $foo = 10; // $foo est un entier $str = "$foo"; // $str est une chaîne $fst = (string) $foo; // $fst est aussi une chaîne
// Ceci affiche : "Identique" if ($fst === $str) { echo 'Identique'; } ?>
|
|
Le transtypage n'a pas toujours un résultat prévisible lors du
transtypage entre certains types.
Pour plus d'informations, lisez :