资讯专栏INFORMATION COLUMN

引用变量

macg0406 / 2285人阅读

摘要:引用变量定义用不同的名字访问同一变量内容以下两段代码与均指向同一内存空间使用只会取消引用,不会销毁内存空间此时与指向同一地址与地址相同,改变,的值也发生改变地址再次发生改变,与相同与地址相同,改变,的值也发生改变地址再次发生改变,与相同

引用变量

定义:用不同的名字访问同一变量内容

以下两段代码$b与$a均指向同一内存空间

Tips: 使用 unset() 只会取消引用,不会销毁内存空间

$a = 1;
$b = $a;
$a = 1;
$b = &$a;

Example

$data = ["a", "b", "c"];
foreach ($data as $key => $val) {
    $val = &$data[$key];
    print_r($data);
}

/*
loop_1
$key = 0
$val = "a"
$val = &$data[0] =>"a" (此时$val与$data[0]指向同一地址)
$data = ["a","b","c"];

loop_2
$key = 1
$val = "b" => $data[0] = "b" ($data[0]与$val地址相同,$val改变,$data[0]的值也发生改变)
$val = &$data[1] => $val = "b"($val地址再次发生改变,与$data[1]相同)
$data = ["b","b","c"];

loop_3
$key = 2
$val = "c" => $data[1] = "c"($data[1]与$val地址相同,$val改变,$data[1]的值也发生改变)
$val = &$data[2] => $val =>"c"($val地址再次发生改变,与$data[2]相同)
$data = ["b","c","c"];
*/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29815.html

相关文章

  • JS学习笔记(第4章)(变量、作用域和内存问题)

    摘要:具体来说就是当执行流进入下列任何一个语句时,作用域链就会得到加长语句的块和语句。这两个语句都会在作用域链的前端添加一个变量对象。对来说,会将指定的对象添加到作用域链中。 1. 基本类型和引用类型的值 JavaScript变量可以用来保存两种类型的值:基本类性值和引用类性值。基本类型值源自以下5种基本数据类型:Undefined、Null、Boolean、Number和String。基本...

    linkin 评论0 收藏0
  • JavaScript引用是如何工作的

    摘要:在中,标量原始值是不可变的,复合值是可变的。当修改共享值时,引用将指向更新的值。通过引用来赋值如何创建一个新的引用当变量中的复合值被重新赋值的时候,将创建一个新的引用。因此,变量通过引用更改为变量中的新值。 感谢Naveen Karippai先生允许我翻译此文章,原文链接:https://www.sitepoint.com/how... 摘要:JavaScript中没有指针,并且Jav...

    hankkin 评论0 收藏0
  • 搞定PHP面试 - 深入了解引用

    摘要:引用可以被看作是文件系统中的硬链接。如果具有引用的数组被复制,其值不会解除引用。如果试图这样从函数返回引用,将会报错,因为函数在试图返回一个表达式的结果而不是一个引用的变量。这并不意味着变量内容被销毁了。 1. 什么是引用 在 PHP 中引用是指用不同的名字访问同一个变量内容。PHP 中的变量名和变量内容是不一样的, 因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和...

    fox_soyoung 评论0 收藏0
  • JavaScript之内存回收&&内存泄漏

    摘要:内存回收内存泄漏前言最近在细读高级程序设计,对于我而言,中文版,书中很多地方一笔带过,所以用自己所理解的,尝试细致解读下。内存回收在谈内存泄漏之前,首先,先了解下的内存回收机制。 内存回收 && 内存泄漏 前言:最近在细读Javascript高级程序设计,对于我而言,中文版,书中很多地方一笔带过,所以用自己所理解的,尝试细致解读下。如有纰漏或错误,会非常感谢您的指出。文中绝大部分内容...

    dayday_up 评论0 收藏0
  • 值类型、执行环境和垃圾回收

    摘要:中的变量是松散类型的即它在不同的时期可以有不同类型的值这也是最强大的的特性之一基本类型和引用类型的值的值类型有两种基本类型引用类型。 ECMAscript中的变量是松散类型的,即它在不同的时期可以有不同类型的值,这也是ECMAscript最强大的的特性之一. 基本类型和引用类型的值 javascript的值类型有两种:基本类型 引用类型。基本类型的值是指的简单的数据段,基本类型有五种,...

    darkbaby123 评论0 收藏0
  • 《JS高程3》—— 内存回收、垃圾收集、内存泄漏

    摘要:局部变量只在函数执行过程中存在。此时,局部变量就没有存在的必要了,因此可以释放它们的内存以供将来使用。总结一般情况下,局部变量的生命周期为函数对象执行到执行结束,全局变量的生命周期为浏览器打开和关闭。 垃圾收集 JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行中使用的内存。在C和C++语言中,开发人员一项基本任务就是手工跟踪内存的使用情况,这是造成许多问题...

    qujian 评论0 收藏0

发表评论

0条评论

macg0406

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<