Home  >  Article  >  Backend Development  >  Detailed explanation of how to use the reference symbol (&) in PHP

Detailed explanation of how to use the reference symbol (&) in PHP

伊谢尔伦
伊谢尔伦Original
2017-07-17 16:44:472818browse

The reference of php is to add the & symbol in front of the variable, function, object, etc. The reference in PHP means: different names access the same variable content.

is different from pointers in C language. The pointer in C language stores a reference to the address of the variable where the content of the variable is stored in memory.
PHP's reference allows you to use two variables to point to the same content

$a="ABC"; 
$b =&$a; 
echo $a;//这里输出:ABC 
echo $b;//这里输出:ABC 
$b="EFG"; 
echo $a;//这里$a的值变为EFG 所以输出EFG 
echo $b;//这里输出EFG

Address transfer of functions Call
I won’t go into details about call by address. The code will be given directly below.

function test(&$a) 
{ 
$a=$a+100; 
} 
$b=1; 
echo $b;//输出1 
test($b);   //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 
echo "<br>"; 
echo $b;//输出101

It should be noted that if test(1); is used here, an error will occur. You can think of the reason by yourself
function Reference return
Look at the code first

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

Explain below:
In this way $a=test(); what you get is not actually a reference return of the function, which is different from ordinary function calls The reason for the difference: This is the regulation of PHP
PHP stipulates that the reference return of the function is obtained through $a=&test();
As for what the reference return is (the PHP manual says: the reference return is used for When you want to use a function to find which variable the reference should be bound to.) This nonsense made me unable to understand it for a long time.
Using the above example to explain is to call the function in the way of
$a=test(). , it just assigns the value of the function to $a, and any changes to $a will not affect $b in the function
And when calling a function through $a=&test(), its function is to return The memory address of the $b variable in $b points to the same place as the memory address of the $a variable.
That is, the effect is equivalent to this ($a=&b;), so changing the value of $a also changes at the same time. The value of $b is so after executing
$a=&test();
$a=5;
, the value of $b becomes 5.

The above is the detailed content of Detailed explanation of how to use the reference symbol (&) in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn