2014-09-26 154 views
2

我希望能够创建一个函数来检查POSTGET数据。我想叫它像这样:如何通过变量变量访问预定义的变量

hasData("POST"); 

这将返回true或false,根据传递的预定义变量名称是否不包含数据,很明显。

我想我可以做这样的事情:

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

$_POST显然是不确定的,当我不喜欢这样,但得到的变量,像这样:

${"_POST"} 

不工作一个问题。

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

  • 首先,为什么我不允许将一个变量传递到大括号中以获取预定义变量的值?
  • 其次,是否有一个更优雅的方式去比这个(如评论中所建议的)首先在全局声明变量?
+0

是否有原因不使用$ _REQUEST? – 2014-09-26 17:21:28

+4

我试图想到一个这样做的原因。 “空($ _POST)”不是一个更简单的方法来完成你正在做的事情吗?特别是因为这些选项实际上只是$ _GET和$ _POST,因为$ _REQUEST是两者的组合。 – Brian 2014-09-26 17:21:30

+0

@Brian这是我想用我自己的类来检查这些变量的更大图片的一部分 - 类将具有其他功能,我宁愿在一个地方使用“empty()”。你对“$ _REQUEST”做了一个很好的说明 - 我没有想到,我主要为此感到好奇,为什么这是不可行的。 – George 2014-09-26 17:27:04

回答

0

看来$ GLOBALS变量还包含$ _GET和$ _POST变量(虽然无法找到任何参考)。

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