我在类函数中有这一行:
$this_value = eval("return $$existing_value;");
这给了我在函数中设置$$existing_value
变量时所需的值,但我发现在99%的情况下我实际上需要访问全局范围。我尝试将其重写为$this_value = eval("return global $$existing_value;");
,但这会返回php错误。
有没有人知道我怎么能正确地做到这一点? (顺便说一句,我知道这代表的不良实践 - 但鉴于这种情况,我想不出任何其他方法)
答案 0 :(得分:2)
尝试
$this_value = eval('global $existing_value; return $$existing_value;');
或
$this_value = eval('global $$existing_value; return $$existing_value;');
答案 1 :(得分:1)
$x = 3;
function sss()
{
$x = 1;
$y = eval('global $x; return $x;');
var_dump($y);
}
sss();
输出int(3)
,所以它有效,但要注意双引号和简单的引号!
答案 2 :(得分:0)
由于eval返回了您需要的值,因此您只需将返回值分配给$_GLOBAL
或$_SESSION
(首选因为$_GLOBAL
是邪恶的)超级全局变量。< / p>
$foo['bar'] = "pie";
$fixed_name_variable = "foo['bar']";
$_GLOBAL['foo'] = eval("return $$fixed_name_variable;");
echo $_GLOBAL['foo']; // pie
答案 3 :(得分:0)
我一直在思考这个过程。我已经放弃了我可以添加一个具有固定名称的新数组,该函数的各种进程可以以编程方式添加所需的值,而不是尝试猜测名称。
它也比变量变量更安全可靠。