无法创建个性化的未设置

时间:2012-02-25 16:17:20

标签: php variables unset

我会创建自己的个性化未设置功能,但它不起作用。 以下是无效的代码示例。

<?php
function remove_var($mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample;
?>

2 个答案:

答案 0 :(得分:1)

您的函数不会取消设置$sExample,因为它存在于该函数之外。不知道为什么不使用unset

function remove_var($mixedVar)
{
   unset($mixedVar); // $mixedVar is unset not actual variable
}

$sExample='Php'; // this is outside variable
remove_var($sExample);
echo $sExample;

即使您通过引用传递变量,unset也不会删除该变量。例如:

function remove_var(&$mixedVar)
{
  unset($mixedVar);
}

$sExample='Php';
remove_var($sExample);
echo $sExample; // Php

所以你应该改用unset

答案 1 :(得分:1)

第一个问题是你是按值传递参数,所以你在remove_var()内对它做的事情不会影响函数外的原始变量。要通过引用传递,请按如下所示更改函数声明:

function remove_var(&$mixedVar)

然而,使用unset()这种方式仍然存在一个怪癖 - 它对我不起作用,即使变量是通过引用传递的。但是,如果将变量设置为null,则 可以正常工作,这大部分是等效的。当函数中的变量为unset()时,它会删除该引用但保留原始引用,并且不会更改该值。当您将值更改为null时,引用将保持不变,但值显然会更改为null。因为获取未设置变量的值无论如何都会给你null,这应该是有效的。所以试试:

function remove_var(&$mixedVar)
{
  $mixedVar = null;
}