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

时间:2015-12-16 20:35:17

标签: php

我以前没有在这里发帖,所以我不确定我的帖子礼仪是否达到了划痕,但我想我会在这里试试运气。

所以,我在这里有这个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

1 个答案:

答案 0 :(得分:-2)

您正在使用$$a(这是一个变量变量)。

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

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