PHP变量被重写会释放内存吗?

syh0726 2020-03-29 1940 3 2

一个向往前端的后端工程师 1.2k PHP变量被重写会释放内存吗 php 我知道unset($a)是会释放内存空间(PS:排除被引用情况) 那么如果我在一...

3582492643-552a960be4e62_big64一个向往前端的后端工程师

  • 1.2k

PHP变量被重写会释放内存吗

php

我知道unset($a)是会释放内存空间(PS:排除被引用情况)

那么如果我在一个循环中使用了一个比如$key这个变量那么当第二次循环的时候$key会变成1,那么这时候感觉是$key被重写了。所以这个时候不显式的使用unset的话,上一个$key还存在吗?

阅读 2.9k

评论2016-05-19 提问

5 个回答

得票时间

3046988269-5644b84c17ed3_big64有明
  • 26.5k

大部分回答并不尽如人意,大家貌似都把PHP当成编译性语言来解读了。不过结果恰恰相反,PHP是脚本语言,其特性和编译性语言是有差别的。

简单说说,PHP的变量依赖于一个内部实现symbol_table符号表,而符号表的基础实现是HashTable,也就是和PHP数组的基础实现是一致的。真是因为符号表的存在,让我们可以使用global标记全局变量,用如compact等函数直接从当前符号表中拉出变量出来。那在谈谈题主说的unset($a)会不会马上释放空间,答案是否定的,unset支持从符号表中把名字为a的这个元素删掉了(只是标记这块空间又可用了,而不是释放空间)。再说循环中重复更新$key这种情况,因为更新的是相同名字的变量,所以在符号表中他们是同一个元素,更新时就会更新相同的位置,之前元素的值就马上被覆盖了。 ...

立即注册
分享的网址网站均收集自搜索引擎以及互联网,非查问网运营,查问网并没有提供其服务,请勿利用其做侵权以及违规行为。

更新于:2020-03-29 21:42:32
  • 评论于 2020-04-02 00:13:45举报  #1楼
    这个涉及到变量在内存中存储的问题,可以更深入的探讨。
    1 条回复
    评论于 2020-04-02 00:16:07
    额,路过,楼主可以开个帖子探讨下。
    评论于 2020-04-02 00:54:29
    看吧,有机会的话。
您需要登录后才可以评论。 立即注册
相关内容

PHP双引号中变量的判断

PHP向js传数组

php中动态输出变量内容,查看进程状态的方法

PHP与APP

PHP是否可以应用于App开发

推荐内容

怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

BT磁力搜索网站汇总和找不到的资源

什么是磁力链接,您如何使用?

Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

使用V2Ray的mKCP协议加速游戏

v2rayN已停止工作

【车险课堂】什么是无赔款优待系数ncd,你“造”吗?