PHP中的unset的使用问题
PHP中有个释放变量的语句叫做 unset(从PHP4开始unset已经不再是一个函数了,而是一个语句), 前几天用unset的时候出了点问题,于是把unset问题总结如下。如果您仔细阅读过PHP的手册,那么就没必要再看这篇文章了,这篇文章是写给看手册 不用心的同学的。
1. < ?PHP
2. function destroy_foo() {
3. global $foo;
4. unset($foo);
5. }
6. $foo = ‘bar’;
7. destroy_foo();
8. echo $foo;
9. ?>
2. function foo() {
3. unset($GLOBALS['bar']);
4. }
5. $bar = “something”;
6. foo();
7. var_dump($bar);
8. ?>
2. 只有当指向该值的所有变量(比如有引用变量指向该值)都被销毁后,地址才会被释放(也要执行1的判断)
下面给出例子代码论 证:
2. $test=str_repeat(“1″,256); //重复一个字符串,返回值为重复后组成的字符串
3. $s = memory_get_usage();
4. //该函数用来查看当前所用内存
5. unset($test);
6. $e = memory_get_usage();
7. echo ‘ 释放内存: ‘.($s-$e);
8. //输出为272,但如果上面test变量改为$test=str_repeat(“1″,255),输出则为0 ,变量值不足256不会释放内存的
9. ?>
2. $test = str_repeat(“1″,256);
3. $p = &$test;
4. unset($test);
5. echo $p;
6. //输出为256个1。如果上面改为unset($p),更不行了,echo $test 直接显示为256个1
7. ?>
2. $test = str_repeat(“1″,256);
3. $p = &$test;
4. $s = memory_get_usage();
5. $test = null;
6. unset($test); //试一下将该句与$test=null 调换先后顺序,则结果将不相同
7. $e = memory_get_usage();
8. echo ‘ 释放内存: ‘.($s-$e);
9. //输出为272
10. var_dump($p); //输出为NULL
11. ?>
2. $test = str_repeat(“1″,256);
3. $p = &$test;
4. $s = memory_get_usage();
5. //注意,以下2个unset()顺序对调没有关系,不影响结果
6. unset($p);
7. unset($test);
8. $e = memory_get_usage();
9. echo ‘ 释放内存: ‘.($s-$e);
10. ?>
转载于:https://blog.51cto.com/flandycheng/444811
PHP中的unset的使用问题相关推荐
- php的foreach循环执行过程分析以及循环中执行unset()的一些问题
文章目录 一.前言 二.foreach的执行过程 1.关于版本不同的foreach变化 2.关于引用计数 3.探寻foreach的运行过程 三.foreach中执行unset()的问题 1.当我们是为 ...
- CMake中set/unset的使用
CMake中的set命令用于将普通.缓存或环境变量(normal, cache, or environment variable)设置为给定值,其格式如下:指定<value>...占位符( ...
- PHP如何让内存不释放,PHP中使用unset销毁变量并内存释放问题
代码如下: for ( $i = 1; $i < 100; $i++ ) { $str = str_repeat('01234567', $i); $a = memory_get_usage() ...
- php填补空缺变量,在PHP中可以使用unset()函数删除数组中的某个元素,数组将自动填补空缺索引。( )...
[单选题]实用新型专利权和外观设计专利权的期限为( ),自申请日起计算. [判断题]切削中,对切削力影响较小的是前角和主偏角. [多选题]作为马克思主义产生阶级基础的19世纪三大工人起义是 [单选题] ...
- PHP--isset()和unset()函数的用法
isset (PHP 3, PHP 4, PHP 5 ) isset -- 检测变量是否设置 描述 bool isset ( mixed var [, mixed var [, ...]]) 如果 v ...
- 如何检查Bash中是否设置了变量?
我如何知道是否在Bash中设置了变量? 例如,如何检查用户是否将第一个参数赋予函数? function a {# if $1 is set ? } #1楼 检查是否设置了变量 var="&q ...
- php如何通过变量销毁unset的过程讲解
2019独角兽企业重金招聘Python工程师标准>>> php如何通过变量销毁unset的过程讲解 unset -- 释放给定的变量 描述 void unset ( mixed va ...
- PHP is_null,empty以及isset,unset的区别
1.empty 判斷一個變量是否為"空". null.false.00.0.'0′.』.為以上值的變量在檢測時都將返回true. 2.isset 判斷一個變量是否已經設置. 0.0 ...
- repo命令添加bin_Linux shell中getopts命令学习--实现一个添加yum源的脚本
这是本人第一次写博客,之前从一些开源技术网站上看到不少大牛和前辈们的文章,从中学习受益.本着开源界的奉献和学习精神,觉得有必要将自己的学习成果拿出来与大家一起交流分享,既当作是一种自我学习的总结也可能 ...
- java unset_PHP--isset()和unset()函数的用法-Java架构师必看
isset(PHP3,PHP4,PHP5)isset--检测变量是否设置描述boolPHP isset (PHP 3, PHP 4, PHP 5 ) isset -- 检测变量是否设置 描述 bool ...
最新文章
- 16 导出pcb各网络的布线长度_设计PCB流程
- java中静态是什么,java中静态和非静态有什么区别
- puppet-dashboard 安装(草稿)
- mysql时间复杂度o的n次方_MySQL性能测试调优
- 一文整理四六级考前必背知识点【精简版】
- 234. Palindrome Linked List
- 通过运行示例从WSO2 ESB开始
- 使用flot绘图出现window.G_vmlCanvasManager is null or not an Object
- 超越java jb51_.net mvc超过了最大请求长度的解决方法
- php加载memcache模块
- publish over ssh、 Kubernetes Continuous Deploy插件
- Long-tail Relation Extraction via Knowledge Graph Embeddings and Graph Convolution Networks
- xss基础认证钓鱼代码收集
- excel提取文字、字母、符号
- 有理样条曲线学习笔记(一)
- 你只跟你自己同在一条船上
- 太原理工大学计算机专业老师,郝晓燕 - 太原理工大学 - 信息与计算机学院
- Linux系统安装make命令(错误提醒:Failed to search for file: Cannot update read-only repo)
- 戴尔OptiPlex 7060 SSD+HHD+win10和ubuntu双系统安装
- jenkins + jmeter +ant 发送邮件失败