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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php 破解防盗链图片函数
Dec 09 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
php 基础函数
Feb 10 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
4.与数据库的连接
2006/10/09 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python生成requirements.txt的两种方法
2019/09/18 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
python清空命令行方式
2020/01/13 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
JPA面试常见问题
2016/11/14 面试题
大学应届生求职简历的自我评价
2013/10/08 职场文书
大学四年规划书范文
2013/12/27 职场文书
捐书活动总结
2014/05/04 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
2014年团支部工作总结
2014/11/17 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
JavaScript 反射学习技巧
2021/10/16 Javascript