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.
Un nom de variable valide commence par une lettre
(A-Z
, a-z
, ou les octets de 128 à 255)
ou par un tiret bas, suivi 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_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Note:
PHP ne prend pas en charge les noms de variables Unicode, cependant, certains
encodages de caractères (comme UTF-8) encodent les caractères de manière
à ce que tous les octets d'un caractère multi-octet soient dans la plage
autorisée, ce qui en fait ainsi un nom de variable valide.
Note:
$this
est une variable spéciale,
qui ne peut pas être assignée.
Avant PHP 7.1.0, l'affectation indirecte (c.à.d. en utilisant
les variables variables)
était impossible.
Exemple #1 Noms de variables valides et invalides
<?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.
?>
PHP accepte une séquence de n'importe quels octets comme nom de variable.
Les noms de variables qui ne respectent pas les règles de nommage mentionnées ci-dessus
ne peuvent être accédés que dynamiquement à l'exécution. Voir
variables variables
pour plus d'informations sur la façon d'y accéder.
Exemple #2 Accéder à des noms de variables inhabituels
<?php
${'nom-invalide'} = 'bar';
$nom = 'nom-invalide';
echo ${'nom-invalide'}, " ", $$nom;
?>
L'exemple ci-dessus va afficher :
Les variables sont toujours assignées par valeur.
C'est-à-dire, lorsqu'une expression est affectée à 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 #3 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
peuvent être assignées par référence.
Exemple #4 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(); // invalide car test() ne retourne pas une variable par référence.
.
?>
Il n'est pas nécessaire de déclarer des variables en PHP, cependant, c'est une très
bonne pratique. Accéder à une variable non définie entraînera un
E_WARNING
(avant PHP 8.0.0, E_NOTICE
).
Une variable non définie a une valeur par défaut de null
.
Le langage isset() peut être utilisé
pour détecter si une variable a déjà été initialisée.
Exemple #5 Valeur par défaut d'une variable non initialisée
<?php
// Une variable non initialisée et non référencée (pas de contexte d'utilisation).
var_dump($unset_var);
?>
L'exemple ci-dessus va afficher :
Warning: Undefined variable $unset_var in ...
NULL
PHP permet l'autovivification de tableaux (création automatique de nouveaux tableaux)
à partir d'une variable non définie.
Ajouter un élément à une variable non définie créera un nouveau tableau et
ne générera pas d'avertissement.
Exemple #6 Autovivification d'un tableau à partir d'une variable non définie
<?php
$unset_array[] = 'valeur'; // Ne génère pas d'avertissement.
?>
Avertissement
Compter sur la valeur par défaut d'une variable non initialisée est problématique
lorsqu'un fichier inclus dans un autre utilise le même
nom de variable.
Pour plus d'informations sur les fonctions liées aux variables, consultez la
Référence des fonctions sur les variables.