Que fait le =&
(égal-esperluette) opérateur d'affectation faire en PHP?
Est-il obsolète?
Ce 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 des modifications du miroir d'objets apportées à un autre, au lieu de copier les données existantes.
On l'appelle affectation par référence , qui, pour citer le manuel, "signifie que les deux variables finissent par pointer vers les mêmes données, et rien est copié n'importe où " .
La seule chose qui est déconseillée avec =&
est "assigner le résultat de new
par référence" dans PHP 5 , ce qui pourrait être la source de toute confusion. new
est automatiquement affecté par référence, donc &
est redondant/déconseillé dans$o = &new C;
, mais pas dans $o = &$c;
.
Comme il est difficile de rechercher, notez que =&
( est égal à l'esperluette) est identique à = &
( est égal à l'esperluette spatiale) et est souvent écrit de telle sorte qu'il s'exécute dans l'autre variable comme $x = &$y['z'];
ou $x = &$someVar
( nom de la variable du signe dollar et commercial). Exemple simplifié à partir des documents:
$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4
Voici un lien pratique vers un section détaillée sur Assigner par référence dans le manuel PHP 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 accessible par référence plutôt que par valeur.
$x = &$y['z'];
a également pour effet de créer $y['z']
s'il n'existe pas et en le définissant sur null
.
Cela empêche les messages d'erreur que vous auriez pu vouloir lire. Je n'ai pas encore trouvé de documentation à ce sujet; peut-être nouveau en 5.3, pour autant que je sache.