This article will take you to understand the references of PHP and introduce in detail the reference passing and reference return of functions. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.
Reference to php (that is, adding an ampersand in front of a variable, function, object, etc.)
Referenced in PHP Meaning: different names access the same variable content.
It is different from pointers in C language. The pointer in C language stores the content of the variable and the address stored in the memory.
1. Variable reference
PHP reference allows you to use two variables to point to the same content
<?php $a = 'abc'; $b = &$a; var_dump($a,$b);//均为'abc' $b = 123; var_dump($a,$b);//均为123
2. Function Pass by reference (call by address)
<?php function test(&$a){ $a = $a + 100; } $b = 1; test($b); var_dump($b);//101
What $b passes to the function is actually the memory address where the variable content of $b is located, which can be changed by changing the value of $a in the function. Value of $b
Note:
Do not add the ampersand in front of $b in the above "test($b);", but in the function In "call_user_func_array", if you want to pass parameters by reference, you need the & symbol
<?php function test(&$a){ $a = $a + 10; } $b = 1; call_user_func_array('test',array(&$b)); var_dump($b);//11
3. The reference of the function returns
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
In this way$ What a=test(); actually gets is not a function reference return, which is no different from an ordinary function call. Calling a function in the $a=test() method only assigns the value of the function to $a, and any changes to $a will not affect $b in the function. How about calling the function in the $a=&test() method? Its function is to point the memory address of the $b variable in return $b to the same place as the memory address of the $a variable.
Static variables are used here to let everyone understand the reference return of the function. In fact, the reference return of the function is mostly used in objects:
class talker{ private $data = 'Hi'; public function &get(){ return $this->data; } public function out(){ echo $this->data; } } $aa = new talker(); $d = &$aa->get(); $aa->out(); $d = 'How'; $aa->out(); $d = 'Are'; $aa->out(); $d = 'You'; $aa->out(); //输出为HiHowAreYou
Recommended learning: "PHP Video Tutorial》
The above is the detailed content of Detailed explanation of reference passing and return of functions in PHP (with code). For more information, please follow other related articles on the PHP Chinese website!