在PHP中检查null和缺少查询字符串参数

Yar*_*rin 17 php request query-string querystringparameter

我希望能够区分现有的查询字符串参数设置为null和缺少参数.所以问题的部分是:

  • 如何检查查询字符串中是否存在参数
  • 在查询字符串中传递空值的既定方法是什么?(例如param = null或param =(nothing))

谢谢

Byr*_*ock 34

使用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
   }
}
Run Code Online (Sandbox Code Playgroud)

  • $ _REQUEST是$ _GET,$ _POST和$ _COOKIE的组合,并且应该很少(如果有的话)使用,因为转到它的安全含义而不是变量的实际来源.此问题涉及查询字符串参数,因此应使用$ _GET. (10认同)
  • +1!正确的答案,但是当使用`empty()`时你不需要`isset()`,因为`empty()`意味着`isset()`.当使用`!empty()`时,这尤其重要.你应该在问题的第二部分添加一个明确的答案. (2认同)
  • @Byron Whitlock:我认为这不正确.文档状态_"empty()与(布尔)var相反,除了未设置变量时不生成警告."_. (2认同)

kar*_*m79 12

或使用array_key_exists:

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

}
Run Code Online (Sandbox Code Playgroud)

我从来没有热衷于将空值传递给服务器的'约定' - 我习惯于测试变量的存在,然后修剪它们并测试空虚.