php变量问题

时间:2011-05-30 12:24:44

标签: php

$_POST['asdf'] = 'something';

function test() {
    // NULL -- not what initially expected
    $string = '_POST';
    echo '====';
    var_dump(${$string});
    echo '====';

    // Works as expected
    echo '++++++';
    var_dump(${'_POST'});
    echo '++++++';

    // Works as expected
    global ${$string};
    var_dump(${$string});

}

// Works as expected
$string = '_POST';
var_dump(${$string});

test();

我不知道为什么这样的行为......任何人都可以解释..我需要知道为什么会有这样的行为。我实际上没有得到代码..

2 个答案:

答案 0 :(得分:10)

查看here

  

请注意变量变量   不能与PHP的Superglobal一起使用   函数或类中的数组   方法。变量$ this也是一个   不能的特殊变量   动态引用。

答案 1 :(得分:4)

PHP没有真正的全局变量。 “超级全球”也是用词不当。 $_POST$_GET永远不会出现在局部变量哈希表中。它们作为别名存在,PHP只能看到普通访问。变量访问方法只能查看当前的本地哈希表。

global $$string;
  //   $$string = & $GLOBALS[$string];

在本地哈希表中创建对超全局的引用是一个很好的技巧。这就是为什么在该语句之后,您可以使用变量来访问“superglobals”。