我们在学习

PHP unset()函数是用来销毁变量的,但很多时候,这个函数只把变量给销毁了,内存中存放的该变量的值仍然没有销毁,也就是没能达到我们想要的释放内存的效果。这里我建议大家用 $变量=null 的方法来释放其内存。原因看了下面的就知道了。

以下是关于PHP unset()函数的几点要点:(以下均在windows环境下测试,php 2.5.9)

1. 该函数只有在变量值所占空间超过256字节长的时候才会释放内存

2. 只有当指向该值的所有变量(比如有引用变量指向该值)都被销毁后,地址才会被释放(也要执行1的判断)

下面给出例子代码论证:<?php

$test=str_repeat("1",256);

$s=memory_get_usage();

//改函数用来查看当前所用内存

unset($test);

$e=memory_get_usage();

echo ' 释放内存: '.($s-$e);

//输出为272,但如果上面test变量改为

$test=str_repeat("1",255),输出则为0

?>

至于为什么是272而不是256,就不是很清楚了,不知道内部是怎么处理的。<?php

$test=str_repeat("1",256);

$p= &$test;

unset($test);

echo $p;

//输出为256个1。如果上面改为unset($p)

,更不行了,echo $test 直接显示为256个1

?>

也就是说内存中赋给$a的值仍然存在。可见unset()并没达到释放内存的效果。

但如果在上述代码中加入$test=null,或者再加一个unset($p),就能达到释放内存效果了,PHP unset()函数测试代码如下:

变量赋值为null方法:<?php

$test=str_repeat("1",256);

$p= &$test;

$s=memory_get_usage();

$test=null;

unset($test);

$e=memory_get_usage();

echo ' 释放内存: '.($s-$e);

//输出为272

var_dump($p); //输出为NULL

?>

将指向该地址中值的变量全部销毁的方法:<?php

$test=str_repeat("1",256);

$p= &$test;

$s=memory_get_usage();

//注意,以下2个unset()顺序对调没

有关系,不影响结果

unset($p);

unset($test);

$e=memory_get_usage();

echo ' 释放内存: '.($s-$e); //输出为272

?>

到此PHP unset()函数论证完毕。

http://www.bkjia.com/PHPjc/445987.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445987.htmlTechArticle我们在学习 PHP unset()函数是用来销毁变量的,但很多时候,这个函数只把变量给销毁了,内存中存放的该变量的值仍然没有销毁,也就是没...

php手动删除变量函数,PHP unset()函数销毁变量_PHP教程相关推荐

  1. php函数unset,PHP unset函数 PHP unset函数原理及使用方法解析

    想了解PHP unset函数原理及使用方法解析的相关内容吗,小猿笔记在本文为您仔细讲解PHP unset函数的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:PHP,unset函数,下面大家 ...

  2. php源码十六进制加密,php-简单对称加密算法和字符串与十六进制之间的互转函数,php-十六进制_PHP教程...

    php-简单对称加密算法和字符串与十六进制之间的互转函数,php-十六进制 /** * 简单对称加密算法之加密 * @param String $string 需要加密的字串 * @param Str ...

  3. php 年月日 中文,php Date()函数输出中文年月日时分秒_PHP教程

    今天我以一个简单的利用date()函数输出中文年月日时分秒引出关于大多数据用户在使用php date()函数的一些问题与date()函数一些参数详解. 当然了,PHP的DATE函数是不可能直接输出中文 ...

  4. php imagettftext 中文,php的GD库imagettftext函数解决中文乱码问题,_PHP教程

    php的GD库imagettftext函数解决中文乱码问题, 本文实例讲述了php的GD库imagettftext函数解决中文乱码问题的方法.分享给大家供大家参考.具体如下: 使用imagettfte ...

  5. php fopen函数php,php fopen函数用法(打开创建文件)_PHP教程 - fopen

    php教程 fopen函数用法(打开创建文件) 在很多时间我们都需要创建文件特别是生成静态页面的时间,我们在php中就常常会用到fopen这个函数来新建文件,它的原是是如何文件存在就追加,不存在可以创 ...

  6. php ord函数 中文,php ord 函数与中文乱码解决方法_PHP教程

    //a字符 $str=(pack("a*", "中国")); echo $str,"=",strlen($str),"字节n&qu ...

  7. php unset函数_PHP | 使用unset()函数从数组中删除元素

    php unset函数 Given an array and we have to remove an element from the array. 给定一个数组,我们必须从数组中删除一个元素. u ...

  8. PHP unset()函数销毁变量 但没有实现释放内存

    <?PHP $a = "hello";$b = &$a;unset( $b );echo $a; // 输出 helloecho $b; // 报错$b = &quo ...

  9. php中unset函数是在哪一章_PHP unset函数原理及使用方法解析

    unset―释放给定的变量 说明 unset(mixed$var[,mixed$...] ) :void unset()销毁指定的变量. unset()在函数中的行为会依赖于想要销毁的变量的类型而有所 ...

  10. php session unset,php使用unset()函数删除/释放session变量

    使用unset()函数删除单个session变量 源码如下: session_start(); $_SESSION['username'] = "Joe"; echo " ...

最新文章

  1. (传送门)android绘图canvas.clipRect()方法的作用
  2. 初等数论--整除--两数乘积保持整除性
  3. 中国药妆行业投资现状与发展策略分析报告2022-2028年
  4. 汇编语言(十九)之删除数组中的元素
  5. EbN0、SNR、0.1nmOSNR的区别与联系
  6. 飞行计算机人机工程,人机工程学版
  7. magento 1.9 用户无法登录 magento 1.9 customer can not login
  8. Java Web Start简介
  9. SpringBoot 整合 Security5
  10. 4775电子书免费链接
  11. 一则 HTTP 405 Method Not Allowed 的解决办法
  12. python 基于smb通信协议实现NAS服务器文件上传和下载
  13. 基于51单片机的交通灯仿真方案原理图设计一个数码管
  14. Unite 2018 | 《崩坏3》:在Unity中实现高品质的卡通渲染(上)
  15. Python 3 《Class》入门练习
  16. 服务器打包文件工具,项目增量发版之全自动打包流程(patch-generator-desk打包软件)...
  17. J2SE:总结—基础很重要哈!
  18. 有道云笔记如何修改全局默认字体样式
  19. 冒泡排序-java版
  20. 网页复选框设置只能选一个_网页自动填表基础教程从简单开始

热门文章

  1. atitit.事件驱动的总结attilax
  2. Atitit.研发团队的管理原则---立长不立贤与按资排辈原则
  3. Atitit.业务系统的新特性 开发平台 新特性的来源总结
  4. 阿里云CentOS 7.4 使用Flask建站
  5. 基金行业数据安全保障体系建设探析
  6. 阿里彭蕾:CEO如何对抗孤独感?
  7. 降本增效利器!趣头条 Spark Remote Shuffle Service 最佳实践
  8. 业务中台实践助力企业数字化转型
  9. 在中国在行其道的智慧城市,为何折戟多伦多? | 凌云时刻
  10. ZStack跨平台迁移可以如此简单