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.

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 a-z, A-Z, et les octets de 127 � 255 (0x7f-0xff).

Note: $this est une variable sp�ciale, qui ne peut pas �tre assign�e.

Astuce

Vous pourriez �galement avoir besoin de jeter un oeil sur Guide de nommage de l'espace utilisateur.

Pour obtenir des informations sur une variable, voyez les fonctions d�di�es aux variables.

Exemple #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�
$t�yte 'mansikka';    // valide : '�' est ASCII (�tendu) 228.
?>

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 aux expressions.

PHP 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 termes, "devient un alias de", ou encore "pointe sur") la variable originale. Les modifications de la nouvelle variable affecteront l'ancienne et vice versa.

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 :

Exemple #2 Assignation de r�f�rence

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

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

Exemple #3 Assignation de r�f�rence et variables anonymes

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

Il n'est pas n�cessaire d'initialiser les variables en PHP, cependant, cela reste une excellente pratique. Les variables non initialis�es ont une valeur par d�faut selon leur type - FALSE pour les bool�ens, z�ro pour les entiers et les r�els, cha�ne vide pour les cha�nes de caract�res (comme utilis�e avec echo()) ou un tableau vide pour les tableaux.

Exemple #4 Valeurs par d�faut des variables non initialis�es

<?php
// Une variable non initialis�e et non r�f�renc�e (pas de contexte d'utilisation); retourne NULL
var_dump($unset_var);

// L'utilisation d'un bool�en; retourne 'false' (Voir l'op�rateur ternaire pour comprendre cette syntaxe)
echo($unset_bool "true\n" "false\n");

// Utilisation d'une cha�ne de caract�res; retourne 'string(3) "abc"'
$unset_str .= 'abc';
var_dump($unset_str);

// Utilisation d'un entier; retourne 'int(25)'
$unset_int += 25// 0 + 25 => 25
var_dump($unset_int);

// Utilisation d'un entier/double; retourne 'float(1.25)'
$unset_float += 1.25;
var_dump($unset_float);

// Utilisation d'un tableau : retourne array(1) {  [3]=>  string(3) "def" }
$unset_arr[3] = "def"// array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);

// Utilisation d'un objet; cr�e un nouvel objet stdClass (voir http://www.php.net/manual/fr/reserved.classes.php)
// Retourne : object(stdClass)#1 (1) {  ["foo"]=>  string(3) "bar" }
$unset_obj->foo 'bar';
var_dump($unset_obj);
?>

Utiliser la valeur par d�faut d'une variable non initialis�e est probl�matique lorsque vous incluez un fichier dans un autre qui utilise le m�me nom de variable. C'est �galement un risque niveau s�curit� lorsque register_globals est activ�. Une erreur de niveau E_NOTICE sera �mise lorsque vous travaillerez avec des variables non initialis�es, cependant, aucune erreur ne sera lanc�e lorsque vous tenterez d'ins�rer un �l�ment dans un tableau non initialis�. La structure de langage isset() peut �tre utilis�e pour d�tecter si une variable a d�j� �t� initialis�e.