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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
PHP实现Socket服务器的代码
Apr 03 PHP
PHP n个不重复的随机数生成代码
Jun 23 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
PHP XML操作的各种方法解析(比较详细)
Jun 17 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
PHP常用的三种设计模式
Feb 17 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
PHP7中I/O模型内核剖析详解
Apr 14 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获取某个目录大小的代码
2008/09/10 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
php中switch语句用法详解
2015/08/17 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
实例详解vue中的$root和$parent
2019/04/29 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python select.select模块通信全过程解析
2017/09/20 Python
python如何读写json数据
2018/03/21 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python文字转语音的实例代码分析
2019/11/12 Python
python实现网页录音效果
2020/10/26 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
预备党员转正考核材料
2014/06/03 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
Nginx下配置Https证书详细过程
2021/04/01 Servers
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫