php的引用就是在變數或函數、物件等前面加上&符號,在PHP 引用的意思是:不同的名字存取同一個變數內容。
與C語言中的指標是有差別的. C語言中的指標裡面儲存的是變數的內容在記憶體中存放的位址變數的引用.
PHP 的引用允許你用兩個變數來指向同一個內容
$a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG
函數的傳址呼叫
傳址呼叫我就不多說了下面直接給程式碼
function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo "<br>"; echo $b;//输出101
要注意的是,在這裡test(1);的話就會出錯,原因自己去想
函數的引用返回
先看程式碼
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而已, 而$a做任何改變都不會影響到函數中的$b
而通過$a=&test()方式調用函數呢, 他的作用是將return $b中的$b變數的記憶體位址與$a變數的記憶體位址指向了同一個地方
即產生了相當於這樣的效果($a=&b;) 所以改變$a的值也同時改變了$b的值所以在執行了
$a=&test();
$a=5;
以後,$b的值變成了5 。
以上是php中引用符號(&)如何使用程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!