PHP unset() 函数实际上并不是一个函数,而是一个语言构造,用于销毁(删除)指定的变量。函数内部 unset() 的行为取决于尝试销毁的变量的类型。
- 如果全局变量是 unset( ) 在函数内部,只有局部变量被销毁。调用环境中的变量将保留与调用 unset() 之前相同的值。
- 要 unset() 内部的全局变量函数中,可以使用 $GLOBALS 数组。
- 如果通过引用传递的变量在函数内部使用 unset(),则仅销毁局部变量。调用环境中的变量将保留与调用 unset() 之前相同的值。
- 如果静态变量在调用环境中unset()对于函数,unset() 仅在函数其余部分的上下文中销毁变量。以下调用将恢复变量以前的值。
注意:可以取消设置在当前上下文中可见的对象属性。无法在对象方法内取消设置 $this。
语法
unset(var, vars)
参数
var | 必填。 指定要取消设置的变量。 |
vars | 可选。 指定要取消设置的其他变量。允许使用多个参数。 |
返回值
不返回值。
示例:unset()示例
下面的示例显示了unset()函数的用法。
<?php
//销毁单个变量
unset($test);
//销毁多个变量
unset($test1, $test2, $test3);
//销毁数组的单个元素
unset($arr['xyz']);
?>
示例:在函数内部对全局变量使用 unset()
当全局变量在函数内部unset()时函数中,只有局部变量被破坏。调用环境中的变量将保留与调用 unset() 之前相同的值。考虑下面的示例:
<?php
$var = 'Hello';
function destroy_var() {
global $var;
unset($var);
}
destroy_var();
echo "Value of \$var: ".$var;
?>
上述代码的输出将是:
Value of $var: Hello
示例:unset() 函数内的全局变量
要unset()函数内部的全局变量,可以使用 $GLOBALS 数组。请参见下面的示例:
<?php
$var = 'Hello';
function destroy_var() {
global $var;
unset($GLOBALS['var']);
}
destroy_var();
echo "Value of \$var: ".$var;
?>
上述代码的输出将是:
Value of $var:
PHP Warning: Undefined variable $var in Main.php on line 10
示例:unset() a 通过引用变量传递
如果通过引用传递的变量在函数内部unset(),则仅销毁局部变量。调用环境中的变量将保留与调用 unset() 之前相同的值。考虑下面的示例:
<?php
function foo(&$var) {
unset($var);
$var = "World";
}
$var = 'Hello';
echo "$var\n";
foo($var);
echo "$var\n";
?>
上述代码的输出将是:
Hello
Hello
示例:unset() 函数内的静态变量
如果静态变量在函数内部unset(),则unset()仅在函数其余部分的上下文中销毁该变量。以下调用将恢复变量以前的值。请参阅下面的示例:
<?php
function foo() {
static $var;
$var++;
echo "Before unset: $var, ";
unset($var);
$var = 50;
echo "After unset: $var\n";
}
foo();
foo();
foo();
?>
上述代码的输出将是:
Before unset: 1, After unset: 50
Before unset: 2, After unset: 50
Before unset: 3, After unset: 50