學習筆記 php php中的引用

2021-07-26 20:19:35 字數 2487 閱讀 5384

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中的 作用

對於這個 符號,之前很少在意,只知道它是錯誤遮蔽的符號。今天再一次接觸到了它,不得不認真了解一下,這面這段資料我是在網上找到的,也是我認為講得比較清楚的資料。是可以遮蔽函式執行過程中遇到問題而產生的一些錯誤 警告資訊,這樣使用者就看不到程式的出錯資訊。這樣除了使用者介面會友好一些外,更重要的是安全性...