即使使用全局属性 - eval()方法的可变损失 - PHP

时间:2014-03-11 21:11:41

标签: php variables eval

我遇到了一个变量问题:

我会直接提供一些代码,以便您理解

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()方法

2 个答案:

答案 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;
}