PHP 变量处理函数

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