PHP: création d'une copie d'une variable de référence
Si je fais une copie d'une variable de référence. Est la nouvelle variable est un pointeur ou tient-il la valeur de la variable le pointeur faisait allusion?
Les références ne sont pas des pointeurs. Voir php.net/manual/en/language.references.arent.php
Parfois, vous devez les utiliser, par exemple lors de la mise en œuvre de offsetget. Si pas de doute que les références en PHP sont un gâchis.
Parfois, vous devez les utiliser, par exemple lors de la mise en œuvre de offsetget. Si pas de doute que les références en PHP sont un gâchis.
OriginalL'auteur HyderA | 2010-05-15
Vous devez vous connecter pour publier un commentaire.
Il contient la valeur. Si vous voulait point, utilisez la
&
opérateur de copier une autre référence:OriginalL'auteur Delan Azabani
Nous allons faire un test rapide:
De sortie est
hello
, donc$copy
n'est pas une référence à%base
.$ref
étant une référence à la$base
est que$copy = $ref
doit avoir exactement le même effet que$copy = $base
.Cela m'a permis de comprendre les références de loin le meilleur. Pour une raison que je l'ai bien que de la copie d'une référence, vous pourriez
$copy = $ref;
. Maintenant, je comprends que c'est comme un déréférencement et copie les données que la référence des références. Je pense à l'aide de C les pointeurs fait de cette confusion, comme vous avez déréférencer manuellement.C'est parce que PHP est références sont plus comme C++ références que C/C++ les pointeurs. 😉
Les pointeurs et les références sont très confuses. Je pense que je vais y arriver haha
OriginalL'auteur Crozin
Permettez-moi de murk l'eau avec cet exemple:
De sortie:
Votre exemple est intentionnellement à confusion. après
foreach ($anything as &$v) {}
variable$v
tiendra la référence au dernier élément du tableau (ce qui est déroutant, c'est le comportement correct), vous devezunset($v)
ou de garder à l'esprit que$v
est une référence. Pro-tip: utiliser var_dump() au lieu de print_r(), il affiche &renvois dans les tableauxOriginalL'auteur SubjectX