2014-09-26 106 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]); 
}