php销毁变量的2种方法是什么

教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP的变量或对象的销毁可以分成显式销毁和隐式销毁:

显式销毁,当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值NULL;

隐式销毁,php是脚本语言,在代码执行完最后一行时,所有申请的内存都要释放掉.

因此,销毁变量的两种方法:

  • unset()

  • $varname=null

举例来说:

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);

结果如下:

Notice: Undefined variable: a in /Library/WEBServer/Documents/test.php on line 42
NULL
object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL }
object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL }
NULL 死了!

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

<?php
$a = 1;
$b = &$a;
unset($a);
var_dump($a); 
var_dump($b);

结果是:

Notice: Undefined variable: a in E:\amp\apache\htdocs\index.php on line 5
NULL int(1)

所以unset()并没有真正销毁变量中内存值,仅仅是切断了变量与内存之间的关系,并将变量名也给干掉了,但内存只要还被引用着就不会被释放; 而在PHP中对象的传值默认是引用传值,这也解释了Human类中,$a被unset()了,但是$b =$c = $d 一样有值。

$varname=null,变量名依然存在,但是内存值却被干掉了。那么在引用传值的情况下又是如何呢?举例:

<?php        
$a = 1;        
$b = &$a;        
$a=null;        
var_dump($a);        
var_dump($b);

输出的结果是:

NULL NULL

所以,$varname=null,虽然变量名和内存指向都还存在,但是内存中的值却是完全删除掉了。

--结束END--

本文标题: php销毁变量的2种方法是什么

本文链接: https://www.lsjlt.com/news/165.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • php销毁变量的2种方法是什么

    php销毁变量的2种方法:1、使用unset()函数,语法“unset($varname)”;2、给指定变量赋值为“NULL”,语法“$varname=null;”。
    阅读数:915 php 销毁变量
  • 向php传入参数的三种方法是什么

    向php传入参数的三种方法:1、使用“$argv”或者“$argc”变量来传递参数;2、使用getopt()函数来传入参数,语法“getopt('a:b:')”;3、利用fwrite()和fgets(),通过用户输入数据来传入参数。
    阅读数:569 php 传入参数
  • php遍历数组的四种方法是什么

    四种方法:1、用“for($i=0;$i<数组长度;$i++)”;2、用“foreach($arr as $v)”;3、用while配合each()与list();4、用“do-while”配合next()、key()与current()。
    阅读数:928 php 数组 遍历数组
  • php遍历一个数组的三种方法是什么

    3种遍历数组的方法:1、用for语句遍历,语法“for($i=0;$i数组长度;$i++){//循环代码}”;2、用foreach语句遍历,语法“foreach($arr as $k=>$v){//循环代码}”;3、用while配合each()与list()进行遍历,语法“while(list($k,$v)=each($arr)){//循环代码}”。前端(vue)入门到精通课程:进入学习本教程操作
    阅读数:608 php数组 php 循环遍历
  • php方法中的静态变量是什么

    php中的静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中;在PHP中只要在变量前加上关键字static,该变量就成为静态变量了。
    阅读数:308 php 静态变量
  • php遍历数组的两种方法是什么

    两种方法:1、利用for循环,语法为“for($i=0;$i<count(数组对象);$i++){echo 数组对象[$i];}”;2、利用foreach循环,语法为“foreach(数组对象 as $v){echo $v;}”。
    阅读数:375 php
  • php的三种命名方法是什么

    php的三种命名方法是:1、小驼峰命名法,其第一个单词以小写字母开始,第二个单词的首字母大写或每一个单词的首字母都采用大写字母;2、帕斯卡命名法(也称大驼峰命名法);3、匈牙利命名法,命名规则为“变量名=属性+类型+对象描述”。
    阅读数:853 php 命名方法
  • php全局变量的含义是什么

    在PHP中,全局变量是在函数外部定义的变量,可以在任何地方进行引用和更改,在php函数中使用全局变量时,可以利用“global”关键字来声明所使用的内容。
    阅读数:388 php
  • PHP获取重定向URL的几种方法是什么

    PHP获取重定向URL的方法:1、使用get_headers函数来获取,语法“get_headers($url, 1)”;2、使用fsockopen()函数来获取;3、利用curl_init()、curl_setopt()等函数来获取。
    阅读数:218 PHP 获取重定向URL
  • php获取url扩展名的几种方法是什么

    获取方法:1、用“substr(strrchr($url,"."),1)”语句;2、用“substr($url,strrpos($url,'.')+1)”语句;3、用“pathinfo($url,PATHINFO_EXTENSION)”。
    阅读数:691 php url 扩展名
  • php中变量是什么意思

    php中变量是用于存储信息的“容器”,与代数类似,可以给PHP变量赋予某个值(x=5)或者表达式(z=x+y);变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如age、carname、totalvolume)。
    阅读数:654 php 变量
  • php两种基本的输出方法是什么

    php两种基本的输出方法是“echo”和“print”。echo用于输出一个或多个字符串,可接受多个参数且没有返回值,语法“echo($str)”;而print用于输出一个字符串,只能接受一个参数且有返回值,语法“print($str)”。
    阅读数:527 php 输出方法 echo print
  • php中变量与常量的区别是什么

    区别:1、常量只能用define()函数或const关键字定义;而变量没有定义的关键字或函数,在赋值的时候被定义。2、变量名前用“$”修饰,常量名则不需要。3、变量值可以改变,常量值不可以。4、变量有全局和局部作用域,而常量只有全局作用域。
    阅读数:616 php 变量 常量
  • php声明字符串变量有几种方法

    php声明字符串变量有3种方法:1、使用“$变量名="字符串内容";”语句;2、使用“$变量名='字符串内容';”语句;3、利用定界符,使用“$变量名=<<<标识符名 一段文本 标识符名;”语句,前后的标识符名必须完全相同。
    阅读数:533 php 声明字符串变量
  • php成员变量是什么意思

    在php中,成员变量是指在类中直接声明的变量,声明语法“访问权限修饰符 变量名称 = 变量值;”;成员变量的值对外不可见,但可通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。类中可声明多个变量,即对象中可以有多个成员变量。
    阅读数:178 php 成员变量
  • js全局变量和php全局变量的区别是什么

    js全局变量和php全局变量的区别:PHP在函数中调用全局变量需要利用global关键字,该关键字是用来导入全局变量的,而在js中调用全局变量则不需要利用关键字。
    阅读数:397 PHP
  • php strlen方法是什么

    php strlen方法用于返回字符串的长度,该函数的使用语法是“strlen(string)”,其中参数string规定了要检查的字符串。
    阅读数:447 php strlen
  • PHP变量名不正确的是什么

    PHP变量名不正确的是“$9thizBeijing”,因为PHP变量名必须是以字母或者下划线字符开始的,并且PHP变量名是区分大小写的。
    阅读数:711 PHP 变量名
  • PHP使用三种方法实现数据采集

    这篇文章主要介绍了PHP使用三种方法实现数据采集,对数据采集感兴趣的同学,可以参考下
    阅读数:501 PHP 数据采集
  • php区别编码的方法是什么

    php区别编码的方法:1、新建一个php文件;2、使用“header()”方法设置页面的编码格式为utf-8;3、使用“mb_detect_encoding()”函数判断字符串是哪种编码即可。
    阅读数:825 php