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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php+mysql查询优化简单实例
Jan 13 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 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
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php强制下载类型的实现代码
2011/04/21 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
jQuery的slideToggle方法实例
2013/05/07 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
Python中实现的RC4算法
2015/02/14 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python opencv之SURF算法示例
2018/02/24 Python
python自动化报告的输出用例详解
2018/05/30 Python
python面向对象 反射原理解析
2019/08/12 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python可以实现栈的结构吗
2020/05/27 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
实习生自荐信范文分享
2013/11/27 职场文书
心得体会范文
2014/01/04 职场文书
会议接待欢迎词
2014/01/12 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书