PHP-在函数中使用一个变量作为另一个变量的名称


PHP - Using a variable as the name of another variable, inside a function

我以前没有在这里发帖,所以不确定我的发帖礼仪是否符合标准,但我想我会在这里碰碰运气。

所以,我在这里有一个PHP函数,我用它来创建变量,如果没有为设置值,它不会抛出错误

function getIfSet(&$value, $default = "") {
    return isset($value) ? $value : $default;
}

我使用它的一个例子是:

$errormsg = getIfSet($_SESSION["LoginError"]);
if ($errormsg != "") {
    unset($_SESSION["LoginError"]);
}

然而,我在一些页面上多次使用它,所以我尝试为此创建一个函数。这不起作用(不过,我对PHP很陌生),但我注意到以下代码可以使用

$a = "errormsg";
$b = "LoginError";
$$a = getIfSet($_SESSION[$b]);
if ($$a != "") {
    unset($_SESSION[$b]);
}

因此,根据这个逻辑,我认为以下功能也会起作用

function get($a, $b) {
    $$a = getIfSet($_SESSION[$b]);
    if ($$a != "") {
        unset($_SESSION[$b]);
    }
}
get("errormsg", "LoginError");

但事实并非如此。相反,它说注意:第78行的未定义变量:errormsg,但我不太明白为什么它不起作用,因为当我在函数中使用变量$a$b时,它工作得很好。提前谢谢你,很抱歉,如果我没有非常有效的编码,我是新的:D

您使用的是$$a(它是一个变量变量)。

您应该只有一个美元符号,例如$a

作为一般规则,您几乎不应该使用变量,尤其是当它们来自用户输入时。