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 10 PHP
php 无限分类的树类代码
Dec 03 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 PHP
php截取字符串函数分享
Feb 02 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 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
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
Three.js快速入门教程
2016/09/09 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
详解python中的模块及包导入
2019/08/30 Python
python多进程并行代码实例
2019/09/30 Python
Python3并发写文件与Python对比
2019/11/20 Python
python:动态路由的Flask程序代码
2019/11/22 Python
Python selenium的基本使用方法分析
2019/12/21 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
python如何查看网页代码
2020/06/07 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
天猫活动策划方案
2014/08/21 职场文书
中学总务处工作总结
2015/08/12 职场文书
python脚本框架webpy模板赋值实现
2021/11/20 Python