php函数取消设置引用传递的变量

时间:2011-07-11 18:13:03

标签: php

目前我正在使用这个php函数:

function if_exist(&$argument, $default = '')
{
    if (isset ($argument))
    {
        echo $argument;
    }
    else
    {
        echo $default;
    }
}

我希望这个函数取消设置变量$ argument(通过引用传递)和$ default只是在回显它们的值后,我该怎么做? 提前谢谢。

3 个答案:

答案 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();
?>