unset() 与引用关系 总结
来源:互联网 发布:免费的程序化交易软件 编辑:程序博客网 时间:2024/06/07 00:41
引用有两个好处,一个是内存省,一个是速度快。unset只有个好处,就是省内存。
unset全局变量在用户函数中只能销毁局部变量,并不能销毁全局变量。(从PHP4开始unset已经不再是一个函数了,而是一个语句)。如果需要销毁全局变量的应该如何做呢?也很简单,用$GLOBALS数组来实现。
引用传递返回函数值
unset(&$hh) 只是断开了变量名和变量值之间的绑定。这并不意味着变量内容被销毁了。
$a="dgs";$b= &$a;unset($b);echo$a;// shows "<span style="font-family: Arial, Helvetica, sans-serif;">dgs</span><span style="font-family: Arial, Helvetica, sans-serif;">"</span>
对于unset:
1. 该函数只有在变量值所占空间超过256字节长的时候才会释放内存
2. 只有当指向该值的所有变量(比如有引用变量指向该值)都被销毁后,地址才会被释放(也要执行1的判断)
也就是检查有无其他变量绑定,有的话就不会释放了。就像这个例子:
$a="hihaha";$b= &$a;unset($b);echo$a;// shows "hihaha"所以建议用 $变量=null 的方法来释放其内存。
unset全局变量在用户函数中只能销毁局部变量,并不能销毁全局变量。(从PHP4开始unset已经不再是一个函数了,而是一个语句)。如果需要销毁全局变量的应该如何做呢?也很简单,用$GLOBALS数组来实现。
以下是unset() 和引用关系 的例子:
<?php//if you do:$a="hihaha";$b= &$a;$c="eita";$b=$c;echo$a;// shows "eita"$a="hihaha";$b= &$a;$c="eita";$b= &$c;echo$a;// shows "hihaha"$a="hihaha";$b= &$a;$b=null;echo$a;// shows nothing (both are set to null)$a="hihaha";$b= &$a;unset($b);echo$a;// shows "hihaha"$a="hihaha";$b= &$a;$c="eita";$a=$c;echo$b;// shows "eita"$a="hihaha";$b= &$a;$c="eita";$a= &$c;echo$b;// shows "hihaha"$a="hihaha";$b= &$a;$a=null;echo$b;// shows nothing (both are set to null)$a="hihaha";$b= &$a;unset($a);echo$b;// shows "hihaha"?>
function foo ( &$var ){$var++;}foo ($a); // 注意在函数调用时没有引用符号 - 只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了
引用传递返回函数值
function &init_users(){ ... return $cls;}//使用引用返回,必须在两个地方都用&符号$user = & init_users();function &init_users(){ ...return $cls;}
0 0
- unset() 与引用关系 总结
- php的unset()与引用
- php变量的传值与引用以及unset
- session_unset() 与 unset() 区别
- 引用与指针的关系
- 指针与引用的关系
- 指针与引用的关系
- 引用与对象的关系
- unset
- php 引用传递、引用返回和取消引用以及unset
- 值类型与引用类型关系
- 引用与using之间的关系
- C#-using与添加引用的关系
- c++引用与变量的关系
- C++引用与指针的关系
- C++引用与指针的关系
- C++中指针与引用的关系
- 引用与多态的关系
- jz2440 ping问题
- eclipse不能进入debug模式的解决方法
- 详解大端模式和小端模式
- 英语翻译之路-3-20150917
- C/C++ 开发库 | C/C++ Development Library http://blog.csdn.net/herorenme/article/details/18795935
- unset() 与引用关系 总结
- 黑马程序员——java基础知识篇——>反射
- C++ 分糖果问题-求一组数的最大公倍数
- HDU 5438 topo
- C++各大有名库的介绍 http://my.oschina.net/qihh/blog/55591
- Hadoop集群MapReduce经典案例
- Xcode快速入门-1-PlayGround
- CentOS7安装nagios并配置出图详解
- 关于Edittext边框的