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 时间计算问题小结
Jan 04 PHP
PHPThumb图片处理实例
May 03 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
PHP开发Apache服务器配置
Jul 15 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
php如何执行非缓冲查询API
Jul 22 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 PHP
Laravel向公共模板赋值方法总结
Jun 25 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
UCenter Home二次开发指南
2009/05/28 PHP
php date()日期时间函数详解
2010/05/16 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
JQuery中getJSON的使用方法
2010/12/13 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Python读取stdin方法实例
2019/05/24 Python
python批量下载抖音视频
2019/06/17 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
黄河象教学反思
2014/02/10 职场文书
网络工程师职业规划
2014/02/10 职场文书
中专毕业生个人职业生涯规划
2014/02/19 职场文书
合作意向书模板
2014/03/31 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
总结Python连接CS2000的详细步骤
2021/06/23 Python
SQL中的连接查询详解
2022/06/21 SQL Server