Que fait l' =&
opérateur d'affectation (equals-esperluette) en PHP?
Est-il obsolète?
Que fait l' =&
opérateur d'affectation (equals-esperluette) en PHP?
Est-il obsolète?
Réponses:
Il n'est pas obsolète et il est peu probable qu'il le soit. C'est le moyen standard, par exemple, de faire partie d'un tableau ou d'un objet en miroir des modifications apportées à un autre, au lieu de copier les données existantes.
C'est ce qu'on appelle l' affectation par référence , ce qui, pour citer le manuel, "signifie que les deux variables finissent par pointer vers les mêmes données et que rien n'est copié nulle part" .
La seule chose qui est obsolète avec =&
est "attribuer le résultat de new
par référence" en PHP 5 , ce qui pourrait être source de confusion. new
est automatiquement attribué par référence, il &
est donc redondant / obsolète dans $o = &new C;
, mais pas dans $o = &$c;
.
Comme il est difficile de rechercher, notez que =&
( est égal à esperluette ) est identique à = &
( est égal à esperluette d'espace ) et est souvent écrit de telle sorte qu'il se heurte à l'autre variable comme $x = &$y['z'];
ou $x = &$someVar
( nom de la variable signe dollar et esperluette ). Exemple simplifié à partir de la documentation:
$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4
Voici un lien pratique vers une section détaillée sur Assign By Reference dans le manuel PHP . Cette page fait partie d'une série de références - cela vaut la peine de prendre une minute pour lire toute la série.
Ce sont deux opérateurs différents. =
est une affectation comme vous le savez probablement. Et &
signifie que la variable doit être accédée par référence plutôt que par valeur.