Manipulation des types
PHP n'impose pas de d�finir explicitement le type d'une variable lors de sa d�claration ; le type d'une variable est d�termin� par son contexte d'utilisation. Si une valeur de type string est assign�e � la variable $var, $var devient de type string. Si une valeur de type integer est ensuite assign�e � cette variable $var, alors, son type devient integer.
Un exemple de conversion de type automatique avec PHP est l'ajout de l'op�rateur '+'. Si une des op�randes est de type float, alors toutes les op�randes seront �valu�es comme de types float, et le r�sultat sera de type float. Sinon, les op�randes seront interpr�t�es comme integers, et le r�sultat sera �galement de type integer. Noter que cela ne modifie pas le type des op�randes ; la seule modification est la fa�on dont les op�randes sont �valu�es et le type de l'expression elle-m�me.
<?php
$foo = "0"; // $foo est une cha�ne de caract�res (ASCII 48)
$foo += 2; // $foo est maintenant un entier (2)
$foo = $foo + 1.3; // $foo est maintenant un nombre � virgule flottante (3.3)
$foo = 5 + "10 Little Piggies"; // $foo est un entier (15)
$foo = 5 + "10 Small Pigs"; // $foo est un entier (15)
?>
Si les 2 derniers exemples vous semblent compliqu�s, reportez-vous � la section sur les conversions de cha�nes en nombres.
Pour forcer une variable � �tre �valu�e en un certain type, reportez-vous � la section sur le transtypage. Pour changer le type d'une variable, reportez-vous � la fonction settype().
Pour tester les exemples de cette section, utilisez la fonction var_dump().
Note: Le comportement d'une conversion automatique en tableau est actuellement non-d�fini.
De plus, vu que PHP supporte l'indexation des cha�nes de caract�res via des positions en utilisant la m�me syntaxe que pour les tableaux, l'exemple suivant est correct pour tous les versions de PHP :
<?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; // bar
?>Reportez-vous � la section sur l'acc�s aux cha�nes par ces caract�res pour plus d'informations.
Modification de types
La modification de types en PHP fonctionne de la m�me fa�on qu'en C : le nom du type d�sir� est �crit entre parenth�ses avant la variable � traiter.
<?php
$foo = 10; // $foo est un entier
$bar = (boolean) $foo; // $bar est un bool�en
?>
Les pr�fixes autoris�s sont :
- (int), (integer) : modification en integer
- (bool), (boolean) : modification en boolean
- (float), (double), (real) : modification en float
- (string) : modification en string
- (binary) : modification en string binaire (PHP 6)
- (array) : modification en array
- (object) : modification en object
- (unset) : modification en NULL (PHP 5)
La modification en binaire et le pr�fixe b ont �t� ajout�s en PHP 5.2.1
Notez que les tabulations et les espaces sont autoris�s dans les parenth�ses. Les exemples suivants sont fonctionnellement �quivalents :
<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>
Modification d'une cha�ne litt�rale et de variables en cha�nes binaires :
<?php
$binary = (binary) $string;
$binary = b"binary string";
?>
Note: Au lieu de modifier une variable en cha�ne, il est �galement possible d'entourer la variable de doubles guillemets.
<?php
$foo = 10; // $foo est un entier
$str = "$foo"; // $str est une cha�ne
$fst = (string) $foo; // $fst est �galement une cha�ne
// Ceci affichera "ils sont identiques"
if ($fst === $str) {
echo "ils sont identiques";
}
?>
Le comportement d'une modification de type n'est pas toujours identique suivant les types. Pour plus d'informations, reportez-vous � ces sections :