PHP unset() 函数详解

当你想要销毁某个变量时,可以采用unset()函数来实现。

语法

void unset ( mixed $var [, mixed $... ] )
可以同时销毁多个变量

参数说明:

$var: 要销毁的变量。

返回值

没有返回值。

实例

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

输出结果

int(123) 
NULL 
array(1) { [0]=> string(4) "quux" } 
NULL 

特别需要注意的地方:

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

实例


<?php
function destroy_foo() {
    global $foo;//global是起传递参数的作用,而并非使变量的作用域为全局。
    //不能在用global声明变量的同时给变量赋值
    unset($foo);//销毁了函数内部的$foo变量
    var_dump($foo);//检查是否被销毁
}

$foo = 'bar';
destroy_foo();
echo $foo;
?>

输出结果为:

NULL  bar
  • 如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现:

实例

<?php
function foo() 
{
    unset($GLOBALS['bar']);
}
 
$bar = "something";
foo();
var_dump($bar);//检查是否被销毁
?>

输出结果:

NULL
  • 关于$GLOBALS — 引用全局作用域中可用的全部变量的描述

说明

$GLOBALS :一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

范例

<?php
function test() {
    $foo = "local variable";//函数内部变量

    echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo '$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";//函数外部变量
test();
?>

输出结果

$foo in global scope: Example content
$foo in current scope: local variable
  • 如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

实例

<?php
function foo(&$bar) {
    unset($bar);
    $bar = "blah";
    echo $bar;
    echo "<br/>";
}
 
$bar = 'something';
echo $bar;
echo "<br/>";
foo($bar);
echo $bar;
?>

以上例程会输出:

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

实例

<?php
function foo()
{
    static $bar;
    $bar++;
    echo "Before unset: $bar, ";
    unset($bar);
    $bar = 23;
    echo "after unset: $bar\n";
}
 
foo();
foo();
foo();
?>

以上例程会输出:

Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23
发布了17 篇原创文章 · 获赞 1 · 访问量 894

猜你喜欢

转载自blog.csdn.net/weixin_43914604/article/details/97259693