摘要:概述該文章主要從內(nèi)存空間上簡述中引用變量的基本概念工作方式,以及一個常見的實例。概念什么是引用變量,在當中,用什么符號定義引用變量不同的名字訪問同一個變量內(nèi)容,使用表示。
概述
該文章主要從內(nèi)存空間上簡述PHP中引用變量的基本概念、工作方式,以及一個常見的demo實例。
概念
什么是引用變量,在PHP當中,用什么符號定義引用變量?
不同的名字訪問同一個變量內(nèi)容,使用&表示。
COW(copy on write)
內(nèi)存優(yōu)化的常見手段,在php中也采用了這種方式來優(yōu)化內(nèi)存。
寫時復制,即只有當對其中一個或多個變量進行寫操作的時候,才會復制一份內(nèi)存,對其內(nèi)容進行修改。
在PHP中使用memory_get_usage()觀察內(nèi)存變化演示
未使用&(引用變量)
$a = range(0,1000); var_dump(memory_get_usage()); $b = $a;` var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
運行結(jié)果:
內(nèi)存在第一次和第二次并沒有太大的差異,第三次產(chǎn)生較大差異
使用 &
$a = range(0,1000); var_dump(memory_get_usage()); $b = &$a; var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
運行結(jié)果:
在使用引用傳值內(nèi)存解析分析:
$a被賦值時在內(nèi)存中占據(jù)A內(nèi)存空間,$b=&$a 時$b指向同一內(nèi)存空間,當$a發(fā)生改變時$b所占據(jù)的內(nèi)存空間會跟隨$a變化unset
unset() 只會取消引用不會銷毀空間
$a=1; $b=&$a; unset($b); echo $a;
輸出結(jié)果:1
內(nèi)存空間分析:
$a被賦值 $b=&$a之后$a與$b直行同一內(nèi)存空間,當unset($b)時取消了$b對$a的引用,使$b不在指向$a的內(nèi)存空間題外話
對象本身就是引用傳遞
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");
運行結(jié)果:
結(jié)果分析:
對象被實例后經(jīng)引用傳遞之后$p1 $p2指向的始終是同一內(nèi)存空間案例
$val) { $val = &$data[$key]; } var_dump($data);
寫出如上程序的輸出結(jié)果?
程序運行時,每一次循環(huán)結(jié)束后變量$data的值是什么?
程序執(zhí)行完成后,變量$data的值是什么?
內(nèi)存變化及解析:
感謝感謝你看到這里,希望本篇可以幫到你。有問題可在評論區(qū)留言,謝謝
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29405.html
摘要:本書的地址篇收集了一些常見的基礎(chǔ)進階面試題,基礎(chǔ)的面試題不再作答。如何實現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當于備份數(shù)據(jù)庫狀態(tài)。相當于備份數(shù)據(jù)庫接收到的命令,所有被寫入的命令都是以的協(xié)議格式來保存的。 本書的 GitHub 地址:https://github.com/todayqq/PH... PHP 篇收集了一些常見的基礎(chǔ)、進階面試題,基礎(chǔ)的面試題不再作答。 基礎(chǔ)篇 ...
摘要:基本配置文件和變量詳解基本配置文件運行的用戶進程數(shù),建議設置為等于總核心數(shù)。允許客戶端請求的最大單文件字節(jié)數(shù)。如果主體超過緩沖區(qū)大小,則完整主體或其一部分將寫入臨時文件。該指令在配置的,和區(qū)塊使用。 Nginx基本配置文件和變量詳解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx運行的用戶 user nginx; # nginx進程數(shù),建議設置為等于C...
摘要:基本配置文件和變量詳解基本配置文件運行的用戶進程數(shù),建議設置為等于總核心數(shù)。允許客戶端請求的最大單文件字節(jié)數(shù)。如果主體超過緩沖區(qū)大小,則完整主體或其一部分將寫入臨時文件。該指令在配置的,和區(qū)塊使用。 Nginx基本配置文件和變量詳解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx運行的用戶 user nginx; # nginx進程數(shù),建議設置為等于C...
閱讀 2517·2021-09-22 15:41
閱讀 1481·2021-08-19 10:54
閱讀 1796·2019-08-23 15:11
閱讀 3425·2019-08-23 10:23
閱讀 1458·2019-08-22 16:28
閱讀 819·2019-08-22 15:11
閱讀 764·2019-08-22 14:53
閱讀 740·2019-08-22 13:49