ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
1.**php变量前面加&符号是什么意思** ``` 1. $foo = 321;   2. $bar = &$foo;    3. $bar = 123;   4. print $foo; 那么输出的结果将会是123 ``` 注意:只有命名变量才可以传地址赋值 2.## php函数前面加&符号 ``` 1. function &test()   2. {   3. static $b=0;//申明一个静态变量   4. $b=$b+1;   5. echo $b;   6. return $b;   7. }   9. $a=test();//这条语句会输出 $b的值 为1   10. $a=5;   11. $a=test();//这条语句会输出 $b的值 为2   12. $a=&test();//这条语句会输出 $b的值 为3   13. $a=5;   14. $a=test();//这条语句会输出 $b的值 为6 ``` 注意: $a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别php规定通过$a=&test(); 方式得到的才是函数的引用返回 $a=test()方式调用函数,只是将函数的值赋给$a而已, 而$a做任何改变 都不会影响到函数中的$b. **而通过$a=&test()方式调用函数呢, 他的作用是将return $b中的 $b变量的内存地址与$a变量的内存地址,** **指向了同一个地方. 即产生了相当于这样的效果($a=&b;) 所以改变$a的值,也同时改变了$b 的值 **,所以在执行了: $a=&test();  $a=5; 以后,$b的值变为了5 3.函数的传址调用 ``` public function test(&$a){ $a ++; } public $a=1; public function test2(){ echo $this->a; $this->test($this->a); echo $this->a; $this->test($this->a); echo $this->a; } 结果:1,2,3 test()调用几次,$a就改变几次 注意: $a必须是局部变量,在函数内定义无效; test(&$a)这样调用会报错; public function test($a){ $a ++; } test(&$a)这样调用还是会报错 ```