PHP代碼:
基本形式:
{
/* ...code... */
return $found_var;
}
例子:
{
static $b=0;//申明一個靜態變量
$b=$b+1;
echo $b;
return $b;
}
$a=test();//這條語句會輸出$b的值為1,
$a=5;
$a=test();//這條語句會輸出$b的值為2 ,因為沒有引用返回,$a=5,不對對象起賦值作用
$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函數前面加&符號有什麼作用呢?
Java代碼
function &test()
{
static $b=0;//申明一個靜態變量
$b=$b+1;
echo $b;
return $b;
}
$a=&test();//這條語句會輸出 $b的值 為1
$a=6;
test();//這條語句會輸出$b的值 為7
php變量前面加&符號是什麼意思
先看一個示例
Php代碼
$foo = 321;
$bar = &$foo;
$bar = 123;
print $foo;那麼輸出的結果將會是什麼呢
Php代碼
123
為什麼會這樣呢?
注意:只有命名變量才可以傳地址賦值,就是說,改變了$bar的值,也就改變了$foo的值了。
另一個例子:
$_GET[1] = 1;
function &a()
{
$a = $_GET[1];
return $a;
}
$x =& a();
$x = 'MoontoC';
echo $_GET[1]; // 此時這裡會顯示 MoontoC, 而不是最初賦值的1, 你明白其中的意義了嗎, 使用函數傳值時必須雙方都使用引用符號才有意義,才能真正引用, 而任何一邊少了引用符號, 都不會得到錯誤的內容, 但內容是傳值, 而不是傳引用了。沒有程序基礎的人最初學php的確很難理解傳值和傳引用的重要性, 覺得反正都能得到自己要的東西, 其實不是的, 很多時候雖然得到的東西一樣, 但是代價卻完全不一樣, 一個長達200萬字的值, 被當作值傳送就是400萬字同時放在內存中待用, 多耗費一倍內存的意思,而傳引用就只是一個快捷方式傳送過去而已。