说明:unset ( mixed $var [, mixed $... ] ) : void

unset() 销毁指定的变量。

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

例子

<?php
// 销毁单个变量
unset ($foo); // 销毁单个数组元素
unset ($bar['quux']); // 销毁一个以上的变量
unset($foo1, $foo2, $foo3);
?>

在函数中销毁全局变量

<?php
function destroy_foo() {
global $foo;
unset($foo);//在函数中销毁,只是函数中的局部变量被销毁,在函数外部依然可以使用
} $foo = 'bar';
destroy_foo();
echo "$foo\n";
?>

输出

bar

在函数中为全局变量赋值(此时修改了全局变量的值)

<?php
function destroy_foo() {
global $foo;
$foo="hello";//全局变量被修改为hello
unset($foo); //在函数中销毁的是局部变量
}
$foo = 'bar';
destroy_foo();
echo "$foo\n";
?>

输出

hello

在函数中先重置全局变量再赋值,此时赋值的是局部变量

<?php
function destroy_foo() {
global $foo;
unset($foo); //在函数中销毁的是局部变量
$foo="hello";//局部变量
}
$foo = 'bar';
destroy_foo();
echo "$foo\n";
?>

输出

bar

在外部销毁变量,再输出这个变量,会提示这个变量没有定义

<?php
function destroy_foo() {
global $foo;
unset($foo);
$foo="hello";
}
$foo = 'bar';
destroy_foo();
unset($foo);
echo "$foo\n";
?>

输出

PHP Notice:  Undefined variable: foo in /Users/macname/testc/test.php on line 

在函数中销毁全局变量

<?php
function foo()
{
unset($GLOBALS['bar']);
} $bar = "something";
echo "$bar\n";
foo();
echo "$bar\n";
?>

输出

something
PHP Notice: Undefined variable: bar in /Users/macname/testc/test.php on line

在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值

<?php
function foo(&$bar) {
unset($bar);// 销毁的是局部变量
$bar = "blah";// 局部变量
} $bar = 'something';
echo "$bar\n"; foo($bar);
echo "$bar\n";
?>

输出

something
something

通过引用修改全局变量

<?php
function foo(&$bar) {
$bar = "blah"; //全局变量重新赋值
unset($bar); //销毁的是局部变量
} $bar = 'something';
echo "$bar\n"; foo($bar);
echo "$bar\n";
?>

输出

something
blah

在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

<?php
function foo()
{
static $bar; //静态变量
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = ; //局部变量
echo "after unset: $bar\n";
} foo();//被销毁前的值是1
foo();//被销毁前的值是2
foo();//被销毁前的值是3
?>

输出

Before unset: , after unset:
Before unset: , after unset:
Before unset: , after unset:

参考:

https://www.php.net/manual/zh/function.unset.php

php unset的更多相关文章

  1. PHP unset()函数销毁变量 但没有实现释放内存

    <?PHP $a = "hello";$b = &$a;unset( $b );echo $a; // 输出 helloecho $b; // 报错$b = &quo ...

  2. is_null, empty, isset, unset对比

    is_null, empty, isset, unset 我们先来看看这4个函数的描述 isset 判断变量是否已存在(配置)unset 把变量删除(释放)掉empty 判断变量是否为空is_null ...

  3. PHP unset销毁变量并释放内存

    PHP的unset()函数用来清除.销毁变量,不用的变量,我们可以用unset()将它销毁.但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: <?php $s=st ...

  4. 11月1日上午PHP------empty、 is_null、isset、unset的区别

    1.empty 判断一个变量是否为"空".null.false.00.0.'0′.』.为以上值的变量在检测時都将返回true. 2.isset 判断一个变量是否已经设置.0.00. ...

  5. 如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?

    如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); pri ...

  6. initial、inherit、unset、revert和all

    前面的话 在CSS中,有4个关键字理论上可以应用于任何的CSS属性,它们是initial(初始).inherit(继承).unset(未设置).revert(还原).而all的取值只能是以上这4个关键 ...

  7. git push.default is unset

    warning: push.default is unset; its implicit value is changing inGit 2.0 from 'matching' to 'simple' ...

  8. mongodb_修改器($inc/$set/$unset/$push/$pop/upsert......)

    主从复制:http://blog.csdn.net/drifterj/article/details/7833883 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能 ...

  9. PHP如何释放内存之unset销毁变量并释放内存详解

    PHP的unset()函数用来清除.销毁变量,不用的变量,我们可以用unset()将它销毁.但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: <?php $s = ...

  10. php foreach循环中unset后续的键值问题

    实例: $arr=array('a','b','c','d','e','f'); foreach($arr as $index=>$tmp){ echo $index.'=>'.$tmp. ...

随机推荐

  1. GC偏好

    GC偏好 测序中的GC偏好指的是基因组上GC含量在50%左右的区域更容易被测到,产生的reads更多,这些区域的覆盖度更高, 在高GC或者低GC区域,不容易被测到,产生较少的reads,这些区域的覆盖 ...

  2. MQTT协议中的topic

    1.MQTT协议中的topic 定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信. 2. 主题层级分隔符--"/" 主题层级分隔符使得 ...

  3. SQL*Plus 与数据库的交互(SQL*Plus时什么)

    Oracle 的 SQL*Plus 是与数据库进行交互的客户端工具,在 SQL*Plus中,可以运行 SQL*Plus 命令与 SQL*Plus 语句.   SQL*Plus 时一个基于 C/S 两层 ...

  4. 修改Mysql 字符集,支持Emoji表情

    插入失败 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 at ...

  5. Linux下环境变量设置 (转)

    Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...

  6. Wireshark 分析Linux SSh 远程登录延迟问题

    1.PuTTy远程登录延迟的分析 现象问题描述:在使用kali linux 的时候喜欢在后台运行而在Windows主机系统上安装PuTTY来实现远程登录 发现每次输入密码的时候会存在延迟10s的情况, ...

  7. zabbix Server 4.0 触发器(Trigger)篇

    zabbix Server 4.0 触发器(Trigger)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.触发器(Trigger)概述 1>.上一篇博客我们介绍了“内 ...

  8. Django之路——10 django的分页组件

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  9. rocketmq那些事儿之入门基础

    分布式消息队列中间件作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性,其复杂性可见一斑,作为核心组件,有必要去深入了解学习 前言 分布式消息队列中间件主要具有以下优势: 削峰 ...

  10. java -static的特性和使用,静态类/方法/块/内部类/回收机制

    mark一下,今天的作业. java-core P115 如果将域定义为static,每个类中只有一个这样的域.(这里的域应该是指一片物理数据空间,而不是单纯的指代某一个变量,而是静态域). publ ...