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 "10 Little Piggies"// $foo est un entier (15)
$foo "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 :