cité en PHP signifie : des noms différents accèdent au même contenu de variable. Il existe des différences entre PHP et les pointeurs en langage C. Le pointeur en langage C stocke l'adresse où le contenu de la variable est stocké en mémoire. Jetons un coup d'œil à php Utilisation des citations (&)
Référence de variable
La référence de PHP vous permet d'utiliser deux variables pour pointer au même contenu.
<?php $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG ?>
Appel de fonction par passage par référence
Je ne dirai pas grand-chose sur l'appel par passage par référence. Le code est donné directement ci-dessous.
function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo "<br>"; echo $b;//输出101
Il convient de noter que si test(1); est utilisé ici, une erreur se produira vous-même
Le retour de référence de la fonction
Regardez le. code d'abord
function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } $a=test();//这条语句会输出 $b的值 为1 $a=5; $a=test();//这条语句会输出 $b的值 为2 $a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6
Explication ci-dessous :
Ce que vous obtenez de cette façon $a=test(); n'est pas réellement un retour de référence de la fonction. Ce n'est pas différent d'un appel de fonction ordinaire. Quant à la raison : C'est la régulation de PHP
Régulation PHP Ce qui est obtenu via $a=&test(); est le retour de référence de la fonction
Quant à ce qu'est un retour de référence (le manuel PHP dit : le retour de référence est utilisé lorsque vous souhaitez utiliser une fonction pour trouver à quelle variable la référence doit être liée) En ce qui concerne ce qui précède.) Je n'ai pas pu comprendre cette absurdité pendant longtemps
Utiliser l'exemple ci-dessus pour expliquer c'est que l'appel d'une fonction en utilisant $a=test() attribue simplement la valeur de la fonction à $a, et $ Toute modification apportée à a n'affectera pas $b
dans la fonction si la fonction est appelée via $. a=&test(), sa fonction est de comparer l'adresse mémoire de la variable $b en retour $b avec la variable $a. L'adresse mémoire pointe au même endroit
, ce qui produit l'effet équivalent ($a=. &b;). Donc changer la valeur de $a change également la valeur de $b, donc après avoir exécuté
$a=&test(); $a=5;
C'est pour laisser tout le monde comprend le retour de référence de la fonction avant d'utiliser des variables statiques. En fait, le retour de référence de la fonction est principalement utilisé dans l'
objet
<?php class a{ var $abc="ABC"; } $b=new a; $c=$b; echo $b->abc;//这里输出ABC echo $c->abc;//这里输出ABC $b->abc="DEF"; echo $c->abc;//这里输出DEF ?>
En PHP5, la copie d'objets se fait via des références. Dans la colonne ci-dessus, $b=new a; $c=$b; est en fait équivalent à $b=new a;
La valeur par défaut en PHP5 est d'appeler les objets par référence, mais parfois vous souhaiterez peut-être créer une copie d'un objet et espérer que les modifications apportées à l'objet d'origine n'affecteront pas la copie. À cet effet, PHP définit une méthode spéciale appelée clone.
Le rôle des références
Si le programme est. références relativement volumineuses Il existe de nombreuses variables dans le même objet et vous souhaitez l'effacer manuellement après avoir utilisé l'objet. Personnellement, il est recommandé d'utiliser la méthode "&", puis d'utiliser $var=null pour l'effacer. 🎜>Autre
utilise la méthode php5 par défaut. De plus, pour transférer de grands tableaux en php5, il est recommandé d'utiliser la méthode "&", après tout, cela économise de l'espace mémoire. Déréférence
nom de la variable
et le contenu de la variable. Cela ne signifie pas que le contenu des variables est détruit. Par exemple :
<?php $a = 1; $b =& $a; unset ($a); ?>
référence globale
Lors de la déclaration d'une variable avec global $var, vous créez en fait une référence à la variable globale. Cela revient à faire :<?php $var =& $GLOBALS["var"]; ?>
$this
//Voici un autre petit épisode
En termes simples
1 : S'il y a le code suivant
$a="ABC"; $b=$a;
$a="EFG";
Parce que $a et $ Les données dans la mémoire pointées par b doivent être réécrites. À ce stade, le noyau Zend déterminera et produira automatiquement une copie des données de $a pour $b, et demandera à nouveau un morceau de mémoire pour le stockage.
Recommandations associées :
Plusieurs fonctions de session courantes en php
La différence entre 0 et null en PHPLa chaîne php la plus complèteCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!