Une variable, c’est quoi?
PHP peut stocker en mémoire des valeurs sous forme de variable. Pour créer une variable, on utilise le symbole $ et on lui donne un nom. Pour affecter une valeur à une variable, on utilise le signe =. Vous pouvez ensuite rappeler cette variable à n’importe quel moment sur la même page.
<?php
$nb = 2; // création de la variable
echo $nb; // affichage de la variable
?>
Affichage
2
Note : Contrairement à d’autres langages, il n’est pas nécessaire de déclarer une variable avant de pouvoir lui affecter une valeur. La première affectation sert de déclaration. Si vous tentez d’afficher une variable qui n’a pas été déclarée, vous provoquerez une erreur d’avertissement.
Nommer une variable
Pour le nom des variables, PHP est sensible à la casse (majuscule, minuscule).
<?php
$nb = 2;
echo $nb; // variable en minuscule
echo "<br>";
$NB = 3; // variable en majuscule
echo $NB;
?>
Affichage
2
3
Dans cet exemple les variables $nb et $NB sont deux variables différentes.
Par convention, un nom de variable ne commence pas par une majuscule.
S’il faut plusieurs mots pour composer le nom d’une variable, ils sont habituellement séparés par des soulignés (_).
<?php
$Nb = 2; //ok mais pas conventionnel (commence par un majuscule)
$nb_erreurs = 3; // variable dont le nom est composé
?>
Durée de vie d’une variable
Lorsque vous déclarer une variable dans une page, elle ne pourra pas être utilisée dans une autre page. La variable disparait donc lorsque que vous changer de page. Sa durée de vie est donc limitée à celle de la page.
Portée d’une variable
Lorsque vous déclarer une variable en dehors des blocs d’instructions (voir la rubrique ‘les fonctions utilisateurs‘), elle a une portée globale : elle est accessible dans toute la page mais pas dans les blocs fonction.
<?php
$nom = "Dany"; // variable globale
function affiche(){
echo $nom; // cette ligne n'affiche rien à l'écran
}
?>
Dans cet exemple la variable déclarée à l’extérieur de la fonction n’est pas accessible dans la fonction.
Si une variable est déclarée dans un bloc d’instruction, sa portée est locale : son utilisation est limitée à ce seul bloc d’instructions.
<?php
function affiche(){
$nb = 2; // variable locale
}
echo $nb; // cette ligne n'affiche rien à l'écran
?>
Dans cet exemple la variable déclarée à l’intérieur de la fonction n’est pas accessible à l’extérieur.
Pour déclarer une variable globale et pouvoir l’utiliser dans une fonction, vous pouvez utiliser l’opérateur global.
<?php
$nom = "Dany";// variable globale
function affiche(){
echo $nom; // cette ligne n'affiche rien à l'écran
global $nom; // rend la variable globale $nom accessible
echo $nom; // affiche Dany
}
?>
En déclarant globales la variable $nom dans la fonction, la référence à cette variable concerne la variable globale.
Une autre solution consiste à utiliser le tableau prédéfini $GLOBALS. Le tableau $GLOBALS est une superglobale, c’est à dire un tableau associatif avec le nom des variables globales comme clé et les valeurs des éléments du tableau comme valeur des variables.
<?php
$chaine1 = "dan";
$chaine2 = "iel";
$chaine = "";
function machaine() {
$GLOBALS['chaine'] = $GLOBALS['chaine1'] . $GLOBALS['chaine2'];
}
machaine();
echo $chaine; // affichera daniel
?>
Dans cet exemple le tableau prédéfini $GLOBALS permet d’utiliser, dans la fonction machaine, les variables globales créées à l’extérieur.
Les variables dynamiques
Si vous voulez que le nom d’une variable soit fournit par une autre variable, vous pouvez utiliser le symbole $$. Le nom de la variable est donc fourni dynamiquement par la valeur d’une autre variable.
<?php
$je_suis = "moi";
$moi = "steeve";
echo $$je_suis; // affichera steeve
?>
Dans cette exemple, $$jesuis vaut $moi – en effet, on remplace ‘$jesuis’ par sa valeur, à savoir ‘moi’ et comme $moi vaut ‘steeve’, alors $$je_suis qui vaut $moi vaudra aussi ‘steeve’.