Que fait l' =&
opérateur d'affectation (equals-esperluette) en PHP?
Est-il obsolète?
php
operators
assignment-operator
Kyle J. Dye
la source
la source
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 denew
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: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.
la source
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.la source
a également pour effet de créer
$y['z']
s'il n'existe pas, et de le définir surnull
.Cela évite les messages d'erreur que vous auriez peut-être voulu lire. Je n'ai pas encore trouvé de documentation à ce sujet; peut-être nouveau en 5.3, pour autant que je sache.
la source