php引用變數

2022-08-01 05:30:16 字數 1716 閱讀 3919

php引用變數的概念和定義方式

概念:在php中引用意味著不同的名字訪問同乙個變數內容。

定義方式:使用&符號

工作原理:

<?php

header("content-type:text/html;charset=utf-8");

//定義乙個變數a

$a = range(0,100);

var_dump(memory_get_usage());//

檢視記憶體使用情況

echo "

";//

定義變數b,將a變數的值賦值給b,遵循寫時改變(copy on write)的原則

$b = $a

;var_dump

(memory_get_usage());

echo "

";//

對a進行修改

$a = range(0,100);

var_dump

(memory_get_usage());

?>

三次輸出的記憶體使用情況分別為:int(144640) 、int(144688) 、int(153368),可知,由於遵循寫時改變的原則,a指向了新的空間,故第三次列印記憶體占用時數值明顯增大。

<?php

header("content-type:text/html;charset=utf-8");

//定義乙個變數a

$a = range(0,100);

var_dump(memory_get_usage());//

檢視記憶體使用情況

echo "

";//

定義變數b,將a變數的值賦值給b,遵循寫時改變(copy on write)的原則

$b = &$a; //改為引用複製,此時a和b永遠指向同乙個空間,而不會複製var_dump

(memory_get_usage());

echo "

";//

對a進行修改

$a = range(0,100);

var_dump

(memory_get_usage());

?>

此時,列印出來的結果分別為:int(144640) 、int(144688) 、int(144680),區別不大,由此可知,a和b還是指向同一空間,當對a進行修改時,就是對a和b共同指向的空間內容的修改。

需要指出的是,unset()函式只會取消引用,而不會銷毀空間

<?php

header("content-type:text/html;charset=utf-8");

$a = 1;

$b = &$a

;unset($b

);echo

$a."\n"; //

結果輸出1

?>

物件也遵循引用思想,而不是寫時複製,例如:

<?php

header("content-type:text/html;charset=utf-8");

class

person

$p1 = new

person();

$p2 = $p1

;$p2->name = "xiaolinzi";

?>

在這個例子中,p1和p2同時指向同乙個空間,若$p2->name改變,則是該空間的內容進行修改。

php引用變數

php引用變數 cow copy on write php變數在賦值的時候不會新開闢乙個記憶體空間,只有在變數有改變操作的時候才會開闢新的記憶體空間 定義變數a a range 0,10000 var dump memory get usage 將變數a賦值給變數b b a var dump mem...

php 引用變數

定義 不同變數名指向同一變數內容 位址 符號 定義變數 a,記憶體開闢乙個空間儲存 a a指向該空間 a a 定義變數 b,因為cow copy on write 特性,a,b都引向 a b a 如果改變 a的值,記憶體又開闢空間儲存,a指向該空間。此時 b還是指向原來的空間 a hello 可以使...

PHP引用變數

在php中引用意味著用不同的名字訪問同乙個變數內容使用 符號 定義變數 a range 0 100 var dump memory get usage int 399112 xdebug debug zval a a refcount 1,is ref 0 recount表示變數指向的記憶體位址引用...