PHP unset函数原理及使用方法解析


Posted in PHP onAugust 14, 2020

unset—释放给定的变量

说明

unset(mixed$var[,mixed$...] ) :void

unset()销毁指定的变量。

unset()在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中unset()一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用unset()之前一样的值。

<?php 
function destroy_foo() { 
  global $foo; 
  unset($foo); 
} 
 
$foo = 'bar'; 
destroy_foo(); 
echo $foo; 
?>

以上例程会输出:

bar

如果您想在函数中unset()一个全局变量,可使用$GLOBALS数组来实现:

<?php 
function foo()  
{ 
  unset($GLOBALS['bar']); 
} 
 
$bar = "something"; 
foo(); 
?>

如果在函数中unset()一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用unset()之前一样的值。

<?php 
function foo(&$bar) { 
  unset($bar); 
  $bar = "blah"; 
} 
 
$bar = 'something'; 
echo "$barn"; 
 
foo($bar); 
echo "$barn"; 
?>

以上例程会输出:

something
something

如果在函数中unset()一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

<?php 
function foo() 
{ 
  static $bar; 
  $bar++; 
  echo "Before unset: $bar, "; 
  unset($bar); 
  $bar = 23; 
  echo "after unset: $barn"; 
} 
 
foo(); 
foo(); 
foo(); 
?>

以上例程会输出:

Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23

参数

var

要销毁的变量。

...

其他变量……

返回值

没有返回值。

范例

Example #1unset()示例

<?php
// 销毁单个变量
unset ($foo);

// 销毁单个数组元素
unset ($bar['quux']);

// 销毁一个以上的变量
unset($foo1, $foo2, $foo3);
?>

Example #2 使用(unset)类型强制转换

(unset)类型强制转换常常和函数unset()引起困惑。 为了完整性,(unset)是作为一个NULL类型的强制转换。它不会改变变量的类型。

<?php
$name = 'Felipe';

var_dump((unset) $name);
var_dump($name);
?>

以上例程会输出:

NULL
string(6) "Felipe"

注释

  • Note:因为是一个语言构造器而不是一个函数,不能被可变函数调用。
  • It is possible to unset even object properties visible in current context.
  • 在 PHP 5 之前无法在对象里销毁$this。
  • 在unset()一个无法访问的对象属性时,如果定义了__unset()则对调用这个重载方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 上传文件的方法(类)
Jul 30 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
检查php文件中是否含有bom的函数
May 31 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
PHP中COOKIES使用示例
Jul 26 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
在 Laravel 项目中使用 webpack-encore的方法
Jul 21 PHP
PHP 时间处理类Carbon
May 20 PHP
PHP常量及变量区别原理详解
Aug 14 #PHP
PHP获取当前时间不准确问题解决方案
Aug 14 #PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 #PHP
php实现微信和支付宝支付的示例代码
Aug 11 #PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 #PHP
基于PHP的微信公众号的开发流程详解
Aug 07 #PHP
php+js实现点赞功能的示例详解
Aug 07 #PHP
You might like
php学习之 认清变量的作用范围
2010/01/26 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
javascript 面向对象思想 附源码
2009/07/07 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Python线程详解
2015/06/24 Python
详解Python中dict与set的使用
2015/08/10 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
django ajax json的实例代码
2018/05/29 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
生产车间标语
2014/06/11 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
先进党支部事迹材料
2014/12/24 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python