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 缓存实现代码及详细注释
May 16 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Zend Framework入门教程之Zend_Mail用法示例
Dec 08 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 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 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
js 页面输出值
2008/11/30 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Django中使用group_by的方法
2015/05/26 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python 格式化输出百分号的方法
2019/01/20 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL