目前我正在使用这个php函数:
function if_exist(&$argument, $default = '')
{
if (isset ($argument))
{
echo $argument;
}
else
{
echo $default;
}
}
我希望这个函数取消设置变量$ argument(通过引用传递)和$ default只是在回显它们的值后,我该怎么做? 提前谢谢。
答案 0 :(得分:15)
根据unset的手册:
如果一个被PASSED BY REFERENCE的变量在a内部未设置() 函数,只破坏局部变量。中的变量 调用环境将保留与unset()之前相同的值 调用。
我认为这是你遇到的问题。因此,我的建议是将$argument
设置为NULL
。根据{{3}},将“移除变量并取消其值。”。
例如:
$argument = NULL;
答案 1 :(得分:2)
$default
按值传递,因此不能取消设置(除了在本地范围内)。
正如您无疑发现的那样,unset()
只是取消了对$argument
的引用。您可以(排序)取消设置$argument
,如下所示:
$argument = null;
答案 2 :(得分:1)
使用函数执行此操作的唯一方法是使用全局变量。
//To unset() a global variable inside of a function,
// then use the $GLOBALS array to do so:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>