我遇到了一个变量问题:
我会直接提供一些代码,以便您理解
global $myVar;
setVar('test');
function setVar($value) {
eval('$myVar = \' '. $value .' \';');
echo $myVar; //Here myVar is set to $vaue=test
}
echo $myVar; //Here the variable gets back to null, no output at all!
为什么?我需要找到一个解决方案
修改
由于需要评估变量的for循环,我需要绝对的eval()方法
答案 0 :(得分:3)
global
仅适用于函数内部。它并没有神奇地创造一个变量"超全球"像你一样尝试:
$myvar = 'foo';
function setVar($value) {
global $myvar; // <---global must be used here INSIDE the function
$myvar = $value;
}
您的代码中绝对不需要eval()
,我强烈建议您永远不要使用它。特别是在开始时。
答案 1 :(得分:1)
你必须在函数中将变量声明为全局变量。
function setVar($value) {
global $myVar;
eval('$myVar = \' '. $value .' \';');
echo $myVar;
}