Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon d'utiliser le symbole de référence (&) en PHP

Explication détaillée de la façon d'utiliser le symbole de référence (&) en PHP

伊谢尔伦
伊谢尔伦original
2017-07-17 16:44:472814parcourir

La référence en PHP est d'ajouter le symbole & devant la variable, la fonction, l'objet, etc. La référence en PHP signifie : des noms différents accèdent au même contenu de variable.

est différent des 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 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

Fonction. Appel par adresse
Je n'entrerai pas dans les détails de l'appel par adresse. Le code sera 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

A noter que si vous testez ici, un; Une erreur se produira. Vous pouvez penser à la raison vous-même.
Retour de référence de fonction
Regardez d'abord le code

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 $a=test(); de cette façon, ce n'est pas réellement un retour de référence de fonction.Il n'y a aucune différence avec les appels de fonction ordinaires. Quant à la raison : c'est la réglementation de PHP
PHP stipule que le retour de référence de la fonction est obtenu via $a=. &test();
Quant à ce qu'est un retour de référence (manuel PHP) Il a 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 comprendre. cela depuis longtemps
En utilisant l'exemple ci-dessus pour l'expliquer, c'est
$a= L'appel d'une fonction dans la méthode test() attribue uniquement la valeur de la fonction à $a, et toute modification dans $a le sera. n'affecte pas $b dans la fonction
. Mais en appelant la fonction dans la méthode $a=&test(), sa fonction est de pointer l'adresse mémoire de la variable $b en retour $b et l'adresse mémoire du $a. variable au même endroit
, ce qui produit l'équivalent de cet effet ($a=&b;) Donc changez $a La valeur change également la valeur de $b, donc après avoir exécuté
$a=&test();
$a=5;
, la valeur de $b devient 5.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn