亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[基礎(chǔ)篇]PHP引用變量

SunZhaopeng / 920人閱讀

摘要:概述該文章主要從內(nèi)存空間上簡(jiǎn)述中引用變量的基本概念工作方式,以及一個(gè)常見(jiàn)的實(shí)例。概念什么是引用變量,在當(dāng)中,用什么符號(hào)定義引用變量不同的名字訪問(wèn)同一個(gè)變量?jī)?nèi)容,使用表示。

概述

該文章主要從內(nèi)存空間上簡(jiǎn)述PHP中引用變量的基本概念、工作方式,以及一個(gè)常見(jiàn)的demo實(shí)例。

概念

什么是引用變量,在PHP當(dāng)中,用什么符號(hào)定義引用變量?

不同的名字訪問(wèn)同一個(gè)變量?jī)?nèi)容,使用&表示。

COW(copy on write)

內(nèi)存優(yōu)化的常見(jiàn)手段,在php中也采用了這種方式來(lái)優(yōu)化內(nèi)存。

寫時(shí)復(fù)制,即只有當(dāng)對(duì)其中一個(gè)或多個(gè)變量進(jìn)行寫操作的時(shí)候,才會(huì)復(fù)制一份內(nèi)存,對(duì)其內(nèi)容進(jìn)行修改。

在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());

運(yùn)行結(jié)果:

內(nèi)存在第一次和第二次并沒(mé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());

運(yùn)行結(jié)果:

在使用引用傳值內(nèi)存解析分析:

$a被賦值時(shí)在內(nèi)存中占據(jù)A內(nèi)存空間,$b=&$a 時(shí)$b指向同一內(nèi)存空間,當(dāng)$a發(fā)生改變時(shí)$b所占據(jù)的內(nèi)存空間會(huì)跟隨$a變化
unset
unset() 只會(huì)取消引用不會(huì)銷毀空間
$a=1;
$b=&$a;
unset($b);
echo $a;

輸出結(jié)果:1

內(nèi)存空間分析:

$a被賦值 $b=&$a之后$a與$b直行同一內(nèi)存空間,當(dāng)unset($b)時(shí)取消了$b對(duì)$a的引用,使$b不在指向$a的內(nèi)存空間
題外話
對(duì)象本身就是引用傳遞
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");

運(yùn)行結(jié)果:

結(jié)果分析:

對(duì)象被實(shí)例后經(jīng)引用傳遞之后$p1 $p2指向的始終是同一內(nèi)存空間
案例
      $val)
     {
          $val = &$data[$key];
     }
    var_dump($data);
    

寫出如上程序的輸出結(jié)果?
程序運(yùn)行時(shí),每一次循環(huán)結(jié)束后變量$data的值是什么?
程序執(zhí)行完成后,變量$data的值是什么?

內(nèi)存變化及解析:

感謝

感謝你看到這里,希望本篇可以幫到你。有問(wèn)題可在評(píng)論區(qū)留言,謝謝

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29405.html

相關(guān)文章

  • PHPer面試指南-PHP

    摘要:本書(shū)的地址篇收集了一些常見(jiàn)的基礎(chǔ)進(jìn)階面試題,基礎(chǔ)的面試題不再作答。如何實(shí)現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當(dāng)于備份數(shù)據(jù)庫(kù)狀態(tài)。相當(dāng)于備份數(shù)據(jù)庫(kù)接收到的命令,所有被寫入的命令都是以的協(xié)議格式來(lái)保存的。 本書(shū)的 GitHub 地址:https://github.com/todayqq/PH... PHP 篇收集了一些常見(jiàn)的基礎(chǔ)、進(jìn)階面試題,基礎(chǔ)的面試題不再作答。 基礎(chǔ)篇 ...

    stackvoid 評(píng)論0 收藏0
  • Nginx基礎(chǔ)(2)- Nginx基本配置文件和變量詳解

    摘要:基本配置文件和變量詳解基本配置文件運(yùn)行的用戶進(jìn)程數(shù),建議設(shè)置為等于總核心數(shù)。允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)。如果主體超過(guò)緩沖區(qū)大小,則完整主體或其一部分將寫入臨時(shí)文件。該指令在配置的,和區(qū)塊使用。 Nginx基本配置文件和變量詳解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx運(yùn)行的用戶 user nginx; # nginx進(jìn)程數(shù),建議設(shè)置為等于C...

    TZLLOG 評(píng)論0 收藏0
  • Nginx基礎(chǔ)(2)- Nginx基本配置文件和變量詳解

    摘要:基本配置文件和變量詳解基本配置文件運(yùn)行的用戶進(jìn)程數(shù),建議設(shè)置為等于總核心數(shù)。允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)。如果主體超過(guò)緩沖區(qū)大小,則完整主體或其一部分將寫入臨時(shí)文件。該指令在配置的,和區(qū)塊使用。 Nginx基本配置文件和變量詳解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx運(yùn)行的用戶 user nginx; # nginx進(jìn)程數(shù),建議設(shè)置為等于C...

    hss01248 評(píng)論0 收藏0
  • PHP回收周期

    摘要:原文回收周期,增加一篇論文在底部。就是說(shuō),僅僅在引用計(jì)數(shù)減少到非零值時(shí),才會(huì)產(chǎn)生垃圾周期。如果他們是循環(huán)引用周期的一部分,將永不能被清除進(jìn)而導(dǎo)致內(nèi)存泄漏。這個(gè)函數(shù)將返回使用這個(gè)算法回收的周期數(shù)。引用計(jì)數(shù)系統(tǒng)中的同步周期回收 原文:回收周期(Collecting Cycles) ,增加一篇論文在底部。 以下過(guò)程僅對(duì)數(shù)組和對(duì)象類型起作用。 傳統(tǒng)上,像以前的 php 用到的引用計(jì)數(shù)內(nèi)存機(jī)制,...

    Astrian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<