我会创建自己的个性化未设置功能,但它不起作用。这是一个不起作用的代码示例。
<?php
function remove_var($mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample;
?>
第一个问题是您按值传递参数,因此您在内部对其执行的remove_var()
操作不会影响函数外部的原始变量。要改为通过引用传递,请按如下方式更改函数声明:
function remove_var(&$mixedVar)
但是,使用这种方式仍然有一个怪癖unset()
——它对我不起作用,即使变量是通过引用传递的。但是,如果您将变量设置为,它确实null
有效,这几乎是等效的。当函数中的变量为 时unset()
,它会删除该引用但保留原始引用并且不更改值。相反,当您将值更改null
为时,引用将被单独保留,但值显然更改为null
. 由于获取未设置变量的值null
无论如何都会给您,因此这应该是等效的。所以试试:
function remove_var(&$mixedVar)
{
$mixedVar = null;
}
您的函数不会取消设置$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
改用。