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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php数组编码转换示例详解
Mar 11 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
PHP多维数组元素操作类的方法
Nov 14 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 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脚本数据库功能详解(上)
2006/10/09 PHP
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
英国在线泳装店:Simply Swim
2019/05/05 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
企事业单位求职者的自我评价
2013/12/28 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
领班岗位职责范文
2014/02/06 职场文书
毕业论文评语大全
2014/04/29 职场文书
班组长安全工作职责
2014/07/15 职场文书
租房协议书范文
2014/08/20 职场文书
离婚协议书范文2015
2015/01/26 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技