php的引用(就是在變數或者函式前面加上&符號) //最重要就是 刪除引用的變數 ,只是引用的變數訪問不了,但是內容並沒有銷毀 在php 中引用的意思是:不同的名字訪問同乙個變數內容.
1. 變數引用
從下面的例子可以看出,使用『&』對變數進行引用傳遞後,改變任何乙個變數的值都會影響到訪問這個變數內容的變數。
<?php
$a = 100;
$b = &$a;
echo
$a; //100
echo
$b; //100
$b = 200;
echo
$a; //200
echo
$b; //200
?>
2.函式的傳址呼叫
函式的傳址呼叫也是同樣的道理,需要注意的是不能在引用中傳遞常量,如test(100)就會引起報錯。
<?php
$a = 100;
function
test
(&$b)
$c = test($a);
echo
$a; //200
echo
$c; //200
?>
3.函式的引用返回
<?php
function &test
()
$a = test(); // 這條語句會輸出 $b的值 為1
$a = 5 ;
$a = test(); // 這條語句會輸出 $b的值 為2
$a = &test(); // 這條語句會輸出 $b的值 為3
$a = 5;
$a = test(); // 這條語句會輸出 $b的值 為6
?>
從上面的例子可以看出,當用$a = test()的方式呼叫函式得到並不是引用的返回,而$a的改變也不會影響到$b。
只用通過$a = &test()的方式呼叫函式才會得到引用的返回,此時改變$a會影響函式中的$b。
3.global引用
在函式內部宣告為 global 的變數,其實是建立了乙個引用。
<?php
$a = 100;
function
test
()test();
echo
$a; //輸出1
?>
4.給引用再次賦予引用
先看個簡單的例子。
<?php
$a = 'string';
$b = 1;
$aa = &$a;
$bb = &$b;
$bb = &$aa;
$bb = 2;
echo
$a; //輸出2
echo
$b; //輸出1
?>
從上面例子可以看到,如果給乙個引用變數賦予乙個新的引用,此時它會先斷開和之前引用的對映,所以在這個例子中,$bb被再次賦值後,其實已經斷開和$b的對映關係,建立了與$a的對映關係。
5.取消引用
使用unset可以取消$a的引用,但不會影響$b,如果需要取消所有的引用,可以用$a = null ,這時引用計數為0,就會觸發zend的**機制。
<?php
$a = 1;
$b = &$a;
unset($a);
echo
$a; //輸出null
echo
$b; //輸出1
?>
從上面例子可以看到,如果給乙個引用變數賦予乙個新的引用,此時它會先斷開和之前引用的對映,所以在這個例子中,$bb被再次賦值後,其實已經斷開和$b的對映關係,建立了與$a的對映關係。
5.物件引用
php中預設就是通過引用來呼叫物件, 但有時你可能想建立乙個物件的副本,並希望原來的物件的改變不影響到副本 . 為了這樣的目的,php提供了clone方法。
<?php
class
test
$a = new test();
$a->var = 1;
$b = $a;
echo
$b->var; //輸出1
$c = clone
$a;$c->var = null;
echo
$a->var
//輸出1
?>
關於物件的引用,還涉及到了深拷貝和淺拷貝。 PHP PHP4中的引用
引用是個很奇妙的東西,有點類似c中的指標,但是又不一樣!在php中,引用只是 變數內容的另外乙個名字。下面我打幾個比方說明一下 只是php4的內容,php5中 關於類和物件的用法有很大的變化,還沒有仔細研究過 1 a b 這裡建立了乙個引用 a,他指向變數名為 b的變數所指向的變數內容,羅嗦一點了 ...
PHP PHP引用的簡單解釋
php的引用意味著我們可以用不同的名字來訪問同樣的內容。指標也是一樣的,可以有不同名字的指標,訪問同樣的內容。但是,php的引用並不是指標。引用並不能訪問記憶體。實際上,我們可以把引用理解為unix系統的硬鏈結。a hello world b a a和 b在這裡是完全相同的,這並不是 a指向了 b或...
PHP php中的 作用
對於這個 符號,之前很少在意,只知道它是錯誤遮蔽的符號。今天再一次接觸到了它,不得不認真了解一下,這面這段資料我是在網上找到的,也是我認為講得比較清楚的資料。是可以遮蔽函式執行過程中遇到問題而產生的一些錯誤 警告資訊,這樣使用者就看不到程式的出錯資訊。這樣除了使用者介面會友好一些外,更重要的是安全性...