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 相关文章推荐
PHP5 安装方法
Oct 09 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
PHP教程 预定义变量
Oct 23 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
php whois查询API制作方法
Jun 23 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
PHP会话处理的10个函数
Aug 11 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 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
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
加快Vue项目的开发速度的方法
2018/12/12 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
使用Python更换外网IP的方法
2018/07/09 Python
python实现电子产品商店
2019/02/26 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
会计毕业生自荐信
2013/11/21 职场文书
门店业绩提升方案
2014/06/08 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
文明倡议书
2015/01/19 职场文书
介绍信格式样本
2015/05/05 职场文书
学校捐书活动总结
2015/05/08 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
检举信的写法
2019/04/10 职场文书