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实现与ASP Banner组件相似的类
Oct 09 PHP
用php+javascript实现二级级联菜单的制作
May 06 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
php中青蛙跳台阶的问题解决方法
Oct 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分页的功能模块
2015/06/16 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
java script编程起步(第三课)
2007/01/10 Javascript
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
python tkinter控件布局项目实例
2019/11/04 Python
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
医院护士的求职信
2014/01/03 职场文书
交通事故检查书范文
2014/01/30 职场文书
教育读书笔记
2015/07/02 职场文书