如何通过变量变量访问预定义变量

时间:2014-09-26 17:17:51

标签: php post

我希望创建一个能够检查POSTGET数据的函数。我想这样称呼它:

hasData("POST");

显然,返回true或false,具体取决于传递的预定义变量名是否包含数据。

我以为我能够做类似的事情:

function hasData($t = 'POST'){
    $varType = "_" . strtoupper($t);
    return !empty( ${$varType} );
}
当我这样做时,

$_POST显然是未定义的,但得到这样的变量:

${"_POST"}

不是问题。

我使用了与此相关的文档和found a comment。我在想:

  • 首先,为什么我不允许将变量传递到花括号中以获得预定义变量的值?
  • 其次,是否有更优雅的方式解决这个问题(正如评论中所建议的那样)首先在全球范围内声明变量?

1 个答案:

答案 0 :(得分:0)

看来$ GLOBALS变量还包含$ _GET和$ _POST变量(虽然不能找到任何引用)。

function hasData($t = 'POST'){
    $varType = "_" . strtoupper($t);
    return !empty($GLOBALS[$varType]);
}