PHP的引用意味着咱們能夠用不一樣的名字來訪問一樣的內容。php
指針也是同樣的,能夠有不一樣名字的指針,訪問一樣的內容。linux
可是,PHP的引用並非指針。引用並不能訪問內存。數組
實際上,咱們能夠把引用理解爲Unix
系統的硬連接。函數
<?php $a = 'Hello world'; $b = &$a;
$a
和$b
在這裏是徹底相同的,這並非$a
指向了$b
或者相反,而是$a
和$b
指向了同一個地方。this
若是具備引用的數組被拷貝,其值不會解除引用。對於數組傳值給函數也是如此。指針
若是對一個未定義的變量進行引用賦值、引用參數傳遞或引用返回,則會自動建立該變量。可是值會是nullcode
除此以外,引用還能夠用來作兩件事:內存
引用傳遞變量get
引用返回io
引用返回用在當想用函數找到引用應該被綁定在哪個變量上面時。
<?php class foo { public $value = 42; public function &getValue() { return $this->value; } } $obj = new foo; $myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42. $obj->value = 2; echo $myValue; // prints the new value of $obj->value, i.e. 2. ?>
Note: 和參數傳遞不一樣,這裏必須在兩個地方都用 & 符號——指出返回的是一個引用,而不是一般的一個拷貝,一樣也指出 $myValue 是做爲引用的綁定,而不是一般的賦值。
許多 PHP 的語法結構是經過引用機制實現的.
global 引用
$this
當用 global $var 聲明一個變量時實際上創建了一個到全局變量的引用。
<?php $var =& $GLOBALS["var"]; ?>