2. php基礎-引用變量的考點

引用變量的考點

  • 真題: 什么是引用變量? 在PHP當中,用什么符號定義引用變量?
  • 考點:PHP的引用變量的概念及定義方式和PHP引用變量的原理
  • 概念:在PHP中引用意味著用不同的名字訪問同一個變量內容。
  • 定義方式:使用 & 符號
  • 工作原理:

變量

// 定義一個變量
$a = range(0, 1000); // 創建一個0-1000的數組
var_dump(memory_get_usage()); // 查看內存使用情況
// 定義一個變量b, 將a的值賦給b
$b = $a; // $b 不會開辟空間,在 php 中使用 COW (Copy On Write) 
var_dump(memory_get_usage()); // 查看內存使用情況

// 對a進行修改, 也就是進行了寫操作, 這時候$a重新開辟空間
$a = range(0, 1000); 
var_dump(memory_get_usage()); // 查看內存使用情況

結果:

int(558352) int(558352) int(595272)

看變量容器

// 變量容器 - Zval

$a = range(0, 3);
xdebug_debug_zval('a'); // 需要安裝xdebug才能用這個函數

$b = $a;
xdebug_debug_zval('a');
    
$a = range(0, 3);
xdebug_debug_zval('a');

結果:

image.png

(refcount: 引用個數,is_ref: 是否是引用)

引用變量

$a = range(0, 1000); // 創建一個0-1000的數組
var_dump(memory_get_usage()); // 查看內存使用情況

$b = &$a;
var_dump(memory_get_usage());

$a = range(0, 1000); 
var_dump(memory_get_usage()); // 查看內存使用情況

結果

int(558352) int(558376) int(558376) // 內存使用差不多
// 變量容器 - Zval

$a = range(0, 3);
xdebug_debug_zval('a'); // 需要安裝xdebug才能用這個函數

$b = &$a;
xdebug_debug_zval('a');
    
$a = range(0, 3);
xdebug_debug_zval('a');

看變量容器

image.png

關于 unset

$a = 1;
$b = &$a;
unset($b); // unset只會取消引用,不會銷毀空間
echo $a; // 空間沒有銷毀,$a 還是有值
image.png

對象(默認引用傳遞)

class Person
{
    public $name = 'zhangsan';
}

$p1 = new Person;
xdebug_debug_zval('p1');

$p2 = $p1;
xdebug_debug_zval('p1');

$p2->name = 'lisi';
xdebug_debug_zval('p1');
image.png

舉一反三

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 全方位剖析 回顧真題考點分析一網打盡 什么是引用變量?在PHP當中,用什么符號定義引用變量? 思考 考官考點 PH...
    followyounger1閱讀 244評論 0 0
  • 一、數組 1、數組定義 數組就是一個鍵值對組成的語言結構,鍵類似于酒店的房間號,值類似于酒店房間里存儲的東西。 $...
    空谷悠閱讀 814評論 4 11
  • 二哥問我:“研究生生活怎么樣?” 還沒等我回答,他緊接著就調侃我:“是不是就是大學生活的延續,繼續墮落三年吶!” ...
    小而不才閱讀 1,259評論 30 25
  • 下班回來,照鏡子發現,臉上痘痘還沒下去,皮膚沒有了以往的光澤,暗淡,無光,眼角開始有了淡淡的皺紋。 數數日子有一段...
    昕語心愿閱讀 277評論 2 3