A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 huawei 于 2017-3-5 10:54 编辑

   一帖搞懂PHP销毁(unset,null,php自释放,析构函数)



   PHP的变量或对象的销毁如果说一定要分类,那么可以分成两种那就是显式销毁和隐式销毁
     1、显式销毁,当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值NULL;
     2、隐式销毁,PHP是脚本语言,在代码执行完最后一行时,所有申请的内存都要释放掉.


     从上面两种销毁方式中,我们可以总结出销毁的三种方法:那就是1、unset(),2、$varname=null,3、PHP自销毁,我们还要加上一个,那就是4、析构函数__destruct()


     作为小白的我们能搞明白上面四种变量或对象的销毁吗?如果不能搞明白,我们就举出一个例子给大家,方便大家理解。

<?php
class Human {
  public $name = '张三';
  public $gender = null;
  public function __destruct() {
      echo '死了!<br />';
  }
}
$a = new Human();
$b = $c = $d = $a;
unset($a);
$d=null;


echo '<hr />';
var_dump($a);
echo '<hr />';
var_dump($b);
echo '<hr />';
var_dump($c);
echo '<hr />';
var_dump($d);


    那以上变量打印出的结果是什么呢?就是下面这部分:
游客,如果您要查看本帖隐藏内容请回复


     首先我们要知道,在PHP中,变量名是存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 因此我们可以得出结论:


      1、unset()不仅将变量内存释放了,而且变量名也变为没有定义,可见将变量都彻底删除掉了。但如果unset()是在引用传值那就又要注意了,举例:
<?php
        $a = 1;
        $b = &$a;
        unset($a);
        var_dump($a);
        var_dump($b);


游客,如果您要查看本帖隐藏内容请回复



评分

参与人数 1黑马币 +4 收起 理由
一切如初 + 4 山寨

查看全部评分

49 个回复

倒序浏览
回复 使用道具 举报
111111111111111111
回复 使用道具 举报
111111111111111111
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报
测试........
回复 使用道具 举报
rewhfuwqjskqajkws
回复 使用道具 举报
PHP的各种销毁
回复 使用道具 举报
lanbao 初级黑马 2016-11-19 16:49:49
9#
zhende feifhangnhajd
回复 使用道具 举报
fdsaaaaaaaaaaaarrrrrrr
回复 使用道具 举报
回复 使用道具 举报
1111111111111111111111111111111
回复 使用道具 举报
个人撒发
回复 使用道具 举报
谢谢分享!!!
回复 使用道具 举报
一帖搞懂PHP的各种销毁(unset,null,php自释放,析构函数)
回复 使用道具 举报
php基础的重点了吧
回复 使用道具 举报
fanphp 初级黑马 2016-12-26 15:34:02
17#
谢谢楼主分享
回复 使用道具 举报
!!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
3121212121212121212121212321321321
回复 使用道具 举报
的点点滴滴多多多多多多多多多多多多
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马