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学习笔记之字符串编码的转换和判断
May 22 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
PHP 正则表达式小结
Feb 12 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
PHP安全下载文件的方法
Apr 07 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
Feb 17 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
PHP中“=&gt;
2019/03/01 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
python实现linux下抓包并存库功能
2018/07/18 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
公务员培训自我鉴定
2013/09/19 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
小学生开学感言
2014/02/28 职场文书
《大海那边》教学反思
2014/04/09 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
化妆品促销活动总结
2015/05/07 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
python中os.path.join()函数实例用法
2021/05/26 Python
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
一起来学习Python的元组和列表
2022/03/13 Python
实现GO语言对数组切片去重
2022/04/20 Golang