##### php引用php引用允許兩個變數指向同一個內容``````如果對一個未定義的變數進行引用賦值,引用穿參,則會自動建立該變數```function foo(&$var){}foo($a);var_dump($a);//輸出null $b = array();foo($b['b']);var_dump(array_key_exists('b',$b));//bool true$c = new stdClass();foo($c->d);var_dump(property_exists($c,'d'));//bool true```如果在一個函數內部給一個聲明為global變數賦予一個引用,該引用只在函數內部可見,可以通過使用$GLOBALS數組避免```$var1 = "example variable";$var2 = "";function global_references($use_globals){ global $var1,$var2; if(!$use_globals){ $var2 =& $var1; }else{ $GLOBALS["var2"] =& $var1; }}global_references(false);echo "var2 is set to $var2"."
";//"var2 is set to "global_references(true);echo "var2 is set to $var2"."
";//"var2 is set to example variable"```取值 (Dereference)當`unset`一個引用,只是斷開了變數名和變數內容之間的綁定,並不代表變數的內容被銷毀了``````函數的引用傳遞```function test(&$a){$a = $a +100;}$b = 1;echo $b;//輸出1test($b);//這裡$b傳遞給函數的其實是$b變數內容所處的記憶體位址,通過函數裡改變$a的值就可以改變$b的值了echo $b;```函數的引用返回``````引用結構出現在物件導向中```class fucker{ private $data = 'hi'; public function &get(){ return $this->data; } public function out(){ echo $this->data; }}$q = new fucker();$d = & $q->get();$q->out();$d = 'fuck';$q->out();$d = 'u';$q->out();$d = 'sir';$q->out();//hifuckusir```