php函數前面加&符號 和 變量前面加&符號的意義
php函數前面加&符號的意思是函數的引用返回,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
下面解釋下:
通過這種方式$a=test();得到的其實不是函數的引用返回,這跟普通的函數調用沒有區別.
至於原因: 這是PHP的規定
php規定通過$a=&test(); 方式得到的才是函數的引用返回.
至於什么是引用返回呢(PHP手冊上說:引用返回用在當想用函數找到引用應該被綁定在哪一個變量上面時。)
用上面的例子來解釋就是
$a=test()方式調用函數,只是將函數的值賦給$a而已, 而$a做任何改變 都不會影響到函數中的$b.
而通過$a=&test()方式調用函數呢, 他的作用是將return $b中的 $b變量的內存地址與$a變量的內存地址,
指向了同一個地方. 即產生了相當於這樣的效果($a=&b;) 所以改變$a的值,也同時改變了$b 的值 ,所以在執行了:
$a=&test(); $a=5; 以后,$b的值變為了5 ......
php函數前面加&符號是什么意思?有的函數前面會加&,因為很少見到,所以不明白php函數前面加&符號是什么意思
那么,php函數前面加&符號有什么作用呢
- function &test()
- {
- static $b=0;//申明一個靜態變量
- $b=$b+1;
- echo $b;
- return $b;
- }
- $a=&test();//這條語句會輸出 $b的值 為1
- $a=6;
- test();//這條語句會輸出$b的值 為7
php變量前面加&符號是什么意思
先看一個示例
- $foo = 321;
- $bar = &$foo;
- $bar = 123;
- print $foo;
那么輸出的結果將會是什么呢
- 123
為什么會這樣呢?
改動新的變量將影響到原始變量,這種賦值操作更加快速
注意:只有命名變量才可以傳地址賦值
就是說,改變了$bar的值,也就改變了$foo的值了