Chapitre 8. Les variables

Table des matières
Essentiel
Variables prédéfinies
Portée des variables
Les variables dynamiques
Variables externes à PHP

Essentiel

En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable. Le nom est sensible à la casse (ie : $x != $X).

Les noms de variables suivent les mêmes règles de nommage que les autres entités PHP. Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés. Exprimé sous la forme d'une expression régulière, cela donne : '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Note : Dans nos propos, une lettre peut être une des lettres minuscules (a à z) ou majuscules (A à Z), et les caractères ASCII de 127 à 255 (0x7f-0xff).

Exemple 8-1. Validité des noms de variables

<?php
  $var = "Jean";
  $Var = "Paul";
  echo "$var, $Var";         // affiche "Jean, Paul"
  $4site = 'pas encore';     // invalide : commence par un nombre
  $_4site = 'pas encore';    // valide : commence par un soulign&eacute;
  $ma&#239;s = 'jaune';      // valide; '&iuml;' est ASCII 239.
?>

En PHP 3, les variables sont toujours assignées par valeur. C'est-à-dire, lorsque vous assignez une expression à une variable, la valeur de l'expression est recopiée dans la variable. Cela signifie, par exemple, qu'après avoir assigné la valeur d'une variable à une autre, modifier l'une des variables n'aura pas d'effet sur l'autre. Pour plus de détails sur ce genre d'assignation, reportez-vous à Expressions.

PHP 4 permet aussi d'assigner les valeurs aux variables par référence. Cela signifie que la nouvelle variable ne fait que référencer (en d'autres terme, "devient un alias de", ou encore "pointe sur") la variable originale. Les modifications de la nouvelle variable affecteront l'ancienne, et vice versa. Cela signifie aussi qu'aucune copie n'est faite : l'assignation est donc beaucoup plus rapide. Cela se fera notamment sentir dans des boucles, ou lors d'assignation de grands objets (tableaux).

Pour assigner par référence, ajoutez simplement un & (ET commercial) au début de la variable qui est assignée (la variable source). Dans l'exemple suivant, Mon nom est Pierre s'affichera deux fois :

<?php
$foo = 'Pierre';              // Assigne la valeur 'Pierre' &agrave; $foo
$bar = &$foo;              // R&eacute;f&eacute;rence $foo avec $bar.
$bar = "Mon nom est Pierre";  // Modifie $bar...
echo $foo;                 // $foo est aussi modifi&eacute;e
echo $bar;
?>

Une chose importante à noter est que seules les variables nommées peuvent être assignées par référence.

<?php
$foo = 25;
$bar = &$foo;      // assignation valide .
$bar = &(24 * 7);  // assignation invalide : r&eacute;f&eacute;rence une expression sans nom
function test() {
   return 25;
}
$bar = &test();    // assignation invalide.
?>

PHP suit les conventions de Perl pour la gestion des opérateurs arithméiques, et non pas celles du lanage C. Par exemple, en Perl 'Z'+1 devient 'AA', tandis que en langage C 'Z'+1 devient '[' ({ ord('Z') == 90, ord('[') == 91 ).

Exemple 8-2. Opérations arithmétiques et caractères

<?php
$i = 'W';
for($n=0; $n<6; $n++)
  echo ++$i . "\n";

/*
  Affiche ceci : 

X
Y
Z
AA
AB
AC

*/
?>