我会创建自己的个性化未设置功能,但它不起作用。 以下是无效的代码示例。
<?php
function remove_var($mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample;
?>
答案 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;
}