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