2010-12-07 76 views
13

我希望能夠區分設置爲空的現有查詢字符串參數和缺少參數。所以,問題的部分是:在PHP中檢查空和查詢字符串參數缺失

  • 我如何檢查如果一個參數查詢字符串
  • 什麼是對的查詢字符串傳遞一個空值所建立的方法存在? (如PARAM = null或PARAM =(無))

感謝

回答

29

使用isset()empty()

if (isset($_REQUEST['param'])) 
{ 
    // param was set in the query string 
    if(empty($_REQUEST['param'])) 
    { 
    // query string had param set to nothing ie ?param=&param2=something 
    } 
} 
+2

+1!正確答案,但使用`empty()`時不需要`isset()`,因爲`empty()`意味着`isset()`。這在使用`!empty()`時尤其重要。你應該爲問題的第二部分添加明確的答案。 – jwueller 2010-12-07 23:20:24

11

或者使用array_key_exists

if(array_key_exists("myParam", $_GET)) { 

} 

我從來沒有去過熱衷於將空值傳遞給服務器的'約定' - 我習慣於測試變量的存在和然後修剪它們並測試空白,例如。

4

存儲在$_GET$_POST中的值只能是字符串或數組,除非在運行時顯式設置。如果您有一個查詢字符串query=string,則值爲"string",如果您改用:query=null,該值將爲"null"。請注意,它是一個字符串。

如果您發送:query=,值將是""或空字符串。注意issetempty之間的differences。如果值不爲空,則isset將爲真,而當值爲false時,empty將爲真。因此,""將爲均爲issetempty

如果你只是想檢查查詢字符串參數被設置爲"null"字符串值,你可以簡單地檢查$_GET['query']=='null'(你可能要檢查前調整字符的大小寫)

2

有了一個如果聲明而不是兩個:

if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name']))) 
{ 
    $name= $_REQUEST['name']; 
}