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


How to access predefined variables by means of variable variables

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

hasData("POST");

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

我想我可以做一些类似的事情:

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

当我这样做的时候,$_POST显然是未定义的,但得到的变量是这样的:

${"_POST"}

工作不是问题。

我查阅了文件,发现了与此有关的评论。我在想:

  • 首先,为什么不允许我将变量传递到大括号中以获得预定义变量的值
  • 其次,有没有比(如评论中所建议的)首先全局声明变量更优雅的方法呢

$GLOBALS变量似乎也包含$_GET和$_POST变量(但找不到任何引用)。

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