Cours ⇒ Cour PHP facebook twitter youtube

Les Variables, constantes et types ⇒ & Affectation par valeur et par référence



L'affectation consiste à donner une valeur à une variable.

lors de la création d'une variable, vous ne déclarez pas son type. C'est la valeur
que vous lui affectez qui détermine ce type. Dans PHP, vous pouvez affecter une variable
par valeur ou par référence. Vous verrez que les méthodes et les conséquences de ces
deux types d'affectation sont différentes et peuvent amener des résultats inattendus, si
vous n'y prenez garde.
L'affectation par valeur se fait à l'aide de l'opérateur =, soit après la création de la variable,
soit en même temps.
Dans l'exemple suivant :
$mavar = expression;
la variable $mavar prend la valeur de l'expression, qui peut être une valeur numérique, par
exemple, une chaîne de caractères littérale, mais aussi une autre variable ou encore une
expression PHP valide contenant des fonctions.
Dans les affectations suivantes :
$mavar=75;
$mavar="Paris";
$mavar=7*3+2/5-91%7; //PHP évalue l'expression puis affecte le résultat
$mavar=mysql_connect($a,$b,$c); //la fonction retourne une ressource
$mavar=isset($var&&($var==9)); //la fonction retourne une valeur booléenne

remarquez l'utilisation du même nom de variable alors que les valeurs affectées sont de
type différent.
Dans l'affectation par valeur à l'aide de l'opérateur =, l'opérande de gauche, c'est-à-dire
la variable à affecter, prend la valeur de l'expression contenue dans l'opérande de droite,
et voilà tout. Toute modification ultérieure de l'opérande de droite, même s'il est luimême
une variable, n'a aucune incidence sur la variable affectée.
Dans l'exemple suivant :
$mavar1="Paris";
$mavar2="Lyon";
$mavar2=$mavar1;
$mavar1="Nantes";
à la fin du code, la variable $mavar2 contient la chaîne "Paris", puisque vous lui avez
affecté la valeur de l'expression $mavar1, et $mavar1 vaut "Nantes", puisque sa valeur a été
modifiée à la fin du script.
Avec l'affectation par référence, toujours réalisée au moyen de l'opérateur =, l'opérande
de droite est une variable qui doit être précédée du caractère & (esperluette).
Dans l'exemple suivant :
$mavar1="Paris";
$mavar2="Lyon";
$mavar2 = &$mavar1;
$mavar1="Nantes";
la variable $mavar2 devient un alias de la variable $mavar1, et les modifications opérées sur
$mavar1 sont répercutées sur $mavar2. Plus déroutant encore pour le novice, et plus dangereux
aussi, toute modification apportée à la valeur de $mavar2 est répercutée dans $mavar1
puisque $mavar2 est un alias de $mavar1.

Exemple. Affectation par valeur et par référence


//Affectation par valeur de $mavar1 et $mavar2
$mavar1="Paris";
echo "\$mavar1= ",$mavar1,"
";
$mavar2="Lyon";
echo "\$mavar2= ",$mavar2,"
";
//Affectation par référence de $mavar2
$mavar2 = &$mavar1;
echo "Affectation par référence de \$mavar2
";
echo "\$mavar1= ",$mavar1,"
";
echo "\$mavar2= ",$mavar2,"
";
echo "modification de \$mavar1
";
$mavar1="Nantes";
echo "\$mavar1= ",$mavar1,"
";
echo "\$mavar2= ",$mavar2,"
";
echo "modification de \$mavar2
";
$mavar2="Marseille";

echo "\$mavar1= ",$mavar1,"
";
echo "\$mavar2= ",$mavar2,"
";
?>
Le résultat de l'exécution de ce script montre l'évolution des valeurs des deux variables
après plusieurs affectations.
$mavar1= Paris
$mavar2= Lyon
affectation par référence de $mavar2
$mavar1= Paris
$mavar2= Paris
modification de $mavar1
$mavar1= Nantes
$mavar2= Nantes
modification de $mavar2
$mavar1= Marseille
$mavar2= Marseille

$mavar1= Marseille
$mavar2= Marseille


Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces