php手冊的定義:引用返回用在當想用函數找到引用應該被綁定在哪一個變量上面時。不要用返回引用來增加性能,引擎足夠聰明來自己進行優化。僅在有合理的技術原因時才返回引用!
舉例如下:
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myvalue=42 這裏等於返回的這個值的地址和$myvalue的內存地址指向了同一個地方
$obj->value = 2; //這裏改變了相當於$this->value的值,所以$myvalue的值也會改變
echo $myValue; // 2
getValue 函數所返回的對象的屬性將被賦值,而不是拷貝,就和沒有用引用語法一樣。
Note:
和參數傳遞不同,這裏必須在兩個地方都用 &符號——指出返回的是一個引用,而不是通常的一個拷貝,同樣也指出
$myValue是作爲引用的綁定,而不是通常的賦值。
然後自己又動手寫了個例子:function &aa($str){
static $abc; //如果沒有這句話,其實引用傳遞沒有什麼意義,因爲每次函數執行完以後,$abc空間就銷燬了,只在當前執行的函數體裏有作用
$abc = "hello".$str;
//echo "<br/>";
return $abc;
}
$str = "1111";
$a = &aa($str); //這裏是返回引用的格式了
$str = "2222";
//echo $a;
aa($str); //改變了參數的值必須要重新執行下函數,要不然$str還只是外部變量,對函數裏面的$abc不起改變作用的
echo $a;
其實變量的存儲和作用域什麼的很重要的