Maison > Article > développement back-end > Explication détaillée de l'utilisation du symbole de référence (&) en php
La référence de PHP consiste à ajouter le symbole & devant la variable, la fonction, l'objet, etc. La référence en PHP signifie : différents noms accèdent au même contenu de variable. Ce qui suit est une introduction à la façon d'utiliser la référence. de PHP. Les amis qui en ont besoin peuvent s'y référer. Il y a une différence entre
et les pointeurs en langage C. Le pointeur en langage C stocke une référence à la variable d'adresse où le contenu de la variable est stocké en mémoire.
La référence de PHP vous permet d'utiliser deux variables pour pointer vers le même contenu
$a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG
Appel de fonction passe par référence
Je n'entrerai pas dans les détails de l'appel par référence. Le code sera donné directement. ci-dessous
<?php 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); >
Le retour de référence de la fonction Regardez d'abord le code<?php 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 :
PHP stipule que le. le retour de référence de la fonction est obtenu via $a=&test();
Quant à ce qu'est le 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. .) Cette absurdité m'a rendu incapable de le comprendre pendant longtemps
$a=&test(); $a= 5
Références aux objets
<?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 ?>
Le code ci-dessus est dans Exécution d'effets en PHP5
Dans PHP5, la copie des 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;
Si le programme est relativement volumineux, qu'il existe de nombreuses variables faisant référence au même objet et que vous souhaitez effacer manuellement l'objet après l'avoir utilisé, je recommande personnellement d'utiliser la méthode "&", puis utilisez la méthode $var =null pour effacer. Sinon, utilisez la méthode par défaut de php5. De plus, pour le transfert de grands tableaux en php5, il est recommandé d'utiliser la méthode "&", après tout, cela économise de l'espace mémoire. .
Lorsque vous supprimez une référence, vous rompez simplement la liaison entre le nom de la variable et le contenu de la variable. Cela ne signifie pas que le contenu des variables est détruit. Par exemple :
$a = 1; $b =& $a; unset ($a);
ne supprimera pas $b, juste $a.
Lorsque vous déclarez une variable avec global $var, vous créez en fait une référence à la variable globale. Cela revient à faire :
$var =& $GLOBALS["var"];
Cela signifie que, par exemple, unset $var ne supprimera pas une variable globale.
Dans une méthode d'un objet, $this est toujours une référence à l'objet qui l'appelle.
//Voici un autre petit épisode
La fonction de pointage (similaire au pointeur) de l'adresse en PHP n'est pas implémentée par l'utilisateur lui-même, mais est implémentée par le Zend core , la référence en PHP adopte le principe de la "copie sur écriture", c'est-à-dire qu'à moins qu'une opération d'écriture ne se produise, les variables ou objets pointant vers la même adresse ne seront pas copiés.
En termes simples
1 : S'il y a le code suivant
$a="ABC"; $b=$a;
En fait À ce moment, $a et $b pointent tous deux vers la même adresse mémoire au lieu que $a et $b occupent des mémoires différentes 2 : Si vous ajoutez le code suivant au code ci-dessus
.$a="EFG";
Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.
Recommandations associées :
PHPL'avantage de l'ajout d'un espace de noms est de faciliter le chargement automatique
PHPDéfinition du niveau d'erreur et analyse du principe
Ce 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!