unset() 函数用于销毁给定的变量。
实例
<?php
// 销毁单个变量
$a="123";
$b=[1,2,3];
$c="abc";
echo $a."<br>";
foreach($b as $d){
echo $d."<br>";
}
echo $c."<br>";
unset ($a);
// 销毁单个数组元素
unset ($b[1]);
// 销毁一个以上的变量
unset($a, $b, $c);
echo "************<br>";
echo $a."<br>";
foreach($b as $d){
echo $d."<br>";
}
echo $c;
?>123
1
2
3
abc
************
Warning: Invalid argument supplied for foreach() in D:\phpstudy_pro\WWW\ss.php on line 57
因为数组被销毁了,所以 foreach() 使用报错。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
实例
<?php
function destroy_a() {
global $a;
global $b;
unset($a);
echo $b."<br>";
echo $a."<br>";
}
$a = 'abc';
$b="def";
destroy_a();
echo $a."<br>";
?>输出结果为:
def
abc
如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现:
实例
<?php
function destroy_a() {
global $b;
unset($GLOBALS['a']);
echo $b."<br>";
echo $a."<br>";
}
$a = 'abc';
$b="def";
destroy_a();
echo $a."<br>";
?>输出结果为:def
如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
实例
<?php
function foo(&$bar) {
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n";
foo($bar);
echo "$bar\n";
?>以上例程会输出:
something
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







评论