Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[PHP]引用返回与节省内存

[PHP]引用返回与节省内存

作者头像
唯一Chat
发布于 2019-09-10 02:45:46
发布于 2019-09-10 02:45:46
52200
代码可运行
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地
运行总次数:0
代码可运行

PHP中的引用是什么: 1.在 PHP 中引用意味着用不同的名字访问同一个变量内容 2.引用可以被看作是 Unix 文件系统中的硬链接。

3.使用unset的话,只是删除他这个名字自身对内容的引用,并没有删除内容本身 php > $a="test";$b=&$a;unset($a);var_dump($b); string(4) "test" php > $a="test";$b=&$a;unset($b);var_dump($a); string(4) "test"

4.设置为null,就是把原内容修改为null,所有对该内容的引用,获取的都是null php > $a="test";$b=&$a;$b=null;var_dump($a); NULL php > $a="test";$b=&$a;$a=null;var_dump($b); NULL

php的引用返回与节省内存: 1.这里必须在两个地方都用 & 符号——指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $myValue 是作为引用的绑定,而不是通常的赋值 2.返回的必须是类属性的形式

使用引用返回所占内存是221344 ; 不使用引用返回多次调用后占884968

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$start=memory_get_usage();

class Test{
        public $test="";
        public function &myTest(){
                $this->test='';
                $this->test=file_get_contents("cacert.pem");
                return $this->test;
        }   
}
$obj=new Test();
$str=&$obj->myTest();
$str2=&$obj->myTest();
$str3=&$obj->myTest();
$str4=&$obj->myTest();

var_dump(memory_get_usage()-$start);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP | 变量、标量知识梳理与运用详析
也就是小数,可以用小数点或者科学计数法表示。 科学计数法可以使用小写的e,也可以使用大写的E。 demo:
凌川江雪
2019/02/26
1K0
PHP中魔术方法的用法
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。
Java架构师必看
2021/03/22
4100
深入理解 PHP7 unset 真的会释放内存吗?
上面提到的两种检验方法,实际上是不严谨的,比如函数不存在时,会出现相同的输出结 果。所以我们在使用时,需要开发人员合理判断当前的使用场景。
猿哥
2020/02/26
1.9K0
深入理解 PHP7 unset 真的会释放内存吗?
深入理解PHP内存管理之谁动了我的内存
本文地址:  http://www.laruence.com/2011/03/04/1894.html转载请注明出处
Java架构师必看
2021/03/22
5750
PHP垃圾回收机制
PHP 是一门托管型语言,在 PHP 编程中,程序员不需要手工处理内存资源的分配与释放(使用 C 编写 PHP 或 Zend 扩展除外),这就意味着 PHP 本身实现了垃圾回收机制(Garbage Collection)。在 PHP 官方网站可以看到对垃圾回收机制的介绍。
兔云小新LM
2019/09/05
1.1K0
看看php内存管理机制与垃圾回收机制
定义变量之后,内存增加,清除变量之后,内存恢复(有些可能不会恢复和以前一样),好像定义变量时申请了一次内存,其实不是这样的,php会预先申请一块内存,不会每次定义变量就申请内存。 首先我们要打破一个思维: PHP不像C语言那样, 只有你显示的调用内存分配相关API才会有内存的分配. 也就是说, 在PHP中, 有很多我们看不到的内存分配过程. 比如对于: $a = "laruence"; 隐式的内存分配点就有: 1.1. 为变量名分配内存, 存入符号表 2.2. 为变量值分配内存 所以, 不能只看表象. 第二, 别怀疑,PHP的unset确实会释放内存, 但这个释放不是C编程意义上的释放, 不是交回给OS. 对于PHP来说, 它自身提供了一套和C语言对内存分配相似的内存管理API: 
友儿
2022/09/11
4870
PHP赋值的内部怎么跑的?
PHP在内核中是通过zval这个结构体来存储变量的,它的定义在Zend/zend.h文件里
写PHP的老王
2019/08/12
9720
PHP赋值的内部怎么跑的?
关于php的引用
以上代码,分别为数组排序以及字符串截取,它们之间毫无关联,放在一起的主要原因就在于:
仙士可
2020/07/23
2.1K0
PHP漏洞函数总结
1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。 常见的payload有 0x01 md5(str) QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a sha1(str) sha1('aaroZmOk') sha1('aaK1ST
企鹅号小编
2018/02/02
2K0
自己用的变量,请自己清理干净
码代码真的不是搬砖那么简单。一个变量虽然都能实现功能,但是不同的选择会有不同的影响。自己用的变量,请自己清理干净!php中的内存扩充是以两倍的方式扩充,同时在变量的发生改变才去改变引用。
写PHP的老王
2019/08/12
5020
PHP细节
var_dump($obj->j); //null var_dump(isset($obj->j));//由于$j没有赋值,为空null,所以返回false //var_dump($obj->properties); var_dump(isset($obj->name));//私有或者保护属性不能被调用,false //output:bool(false),你的答案对了吗?为什么
唐成勇
2019/05/26
7680
PHP之引用计数内存管理机制和垃圾回收机制
上述代码中,我将一个字符串赋值给变量a,然后将a的引用赋值给了变量b。显然,这个时候的内存指向应该是这样的:
全栈程序员站长
2022/06/29
1K0
PHP之引用计数内存管理机制和垃圾回收机制
PHP 垃圾回收与内存管理指引
php 的变量存储在「zval」变量容器(数据结构)中,「zval」属性包含如下信息:
柳公子
2018/09/17
1.2K0
PHP 垃圾回收与内存管理指引
PHP重载,不一样的重载
PHP所提供的重载(overloading)是指动态地创建类属性和方法。我们是通过魔术方法(magic methods)来实现的。
joshua317
2021/11/01
1.3K0
PHP重载,不一样的重载
PHP 单例模式是干什么的?
就是一个类只能实例化一次,如果有一个config配置文件,然后实例化多次的话, 在运行过程中修改了配置的话,就不知道哪个配置中进行了修改。 这样使用单例模式的话就避免了这个情况发生
Alone88
2019/10/22
5060
十个 PHP 开发者最容易犯的错误
PHP 语言让 WEB 端程序设计变得简单,这也是它能流行起来的原因。但也是因为它的简单,PHP 也慢慢发展成一个相对复杂的语言,层出不穷的框架,各种语言特性和版本差异都时常让搞的我们头大,不得不浪费大量时间去调试。这篇文章列出了十个最容易出错的地方,值得我们去注意。 易犯错误 #1: 在 foreach 循环后留下数组的引用 还不清楚 PHP 中 foreach 遍历的工作原理?如果你在想遍历数组时操作数组中每个元素,在 foreach 循环中使用引用会十分方便,例如 $arr = array(1, 2
前端教程
2018/04/17
3.1K0
PHP中的深拷贝与浅拷贝
拷贝是由英文copy的音译词,拼音是kǎo bèi。copy意为复制、摹本。拷贝有四种解释:一指一个计算机系统的DOS命令,意为“复制”,是一个新名词,广泛地应用于IT的各个领域;二指由底片复制出来供放映电影用的胶片,如巴金的《随想录·再谈<望乡>》中说到:“我们最初就是根据这个拷贝放映的。”;三指复写,如拷贝纸、拷贝笔等;四指一个流行语,指复印、照抄、抄袭等意思,贬义词。
兔云小新LM
2019/12/10
8920
PHP中的深拷贝与浅拷贝
彻底搞明白PHP的中引用的概念
之前我们其实已经有过几篇文章讲过引用方面的问题,这次我们来全面的梳理一下引用在PHP到底是怎么回事,它和C中的指针有什么不同,在使用的时候要注意些什么。
硬核项目经理
2020/04/26
6440
易犯错误 | 十个 PHP 开发者最容易犯的错误
PHP 语言让 WEB 端程序设计变得简单,这也是它能流行起来的原因。但也是因为它的简单,PHP 也慢慢发展成一个相对复杂的语言,层出不穷的框架,各种语言特性和版本差异都时常让搞的我们头大,不得不浪费大量时间去调试。这篇文章列出了十个最容易出错的地方,值得我们去注意。 易犯错误 #1: 在 foreach循环后留下数组的引用 还不清楚 PHP 中 foreach 遍历的工作原理?如果你在想遍历数组时操作数组中每个元素,在 foreach 循环中使用引用会十分方便,例如
码农编程进阶笔记
2021/11/01
4.5K0
学习PHP弱引用的知识
之前的文章中,我们已经学习过引用和引用传值相关的知识。我们知道,PHP 中没有纯引用(指针),不管是对象,还是用引用符号 & 赋值的变量,都是对一个符号表的引用。而今天,我们要学习的是另一种引用形式:弱引用。
硬核项目经理
2020/09/10
3K0
相关推荐
PHP | 变量、标量知识梳理与运用详析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验