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+mysql写的留言本
Oct 09 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
php中对2个数组相加的函数
Jun 24 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
Yii框架安装简明教程
May 15 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中如何直接执行SHELL
2013/06/28 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python判断正负数方式
2020/06/03 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
校领导推荐信
2013/11/01 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
房屋转让协议书
2014/10/18 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
统招统分证明
2015/06/23 职场文书
导游词之清晏园
2019/11/22 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
python正则表达式re.search()的基本使用教程
2021/05/21 Python
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
golang的文件创建及读写操作
2022/04/14 Golang
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS