Проверка на нулевые и отсутствующие параметры строки запроса в PHP - PullRequest
16 голосов
/ 08 декабря 2010

Я хочу иметь возможность различать существующие параметры строки запроса с нулевым значением и отсутствующие параметры.Итак, части вопроса:

  • Как проверить, существует ли параметр в строке запроса
  • Каков установленный метод для передачи нулевого значенияв строке запроса?(например, param = null или param = (ничто))

Спасибо

Ответы [ 4 ]

33 голосов
/ 08 декабря 2010

Использование 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
   }
}
12 голосов
/ 08 декабря 2010

Или используйте array_key_exists:

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

}

Мне никогда не нравились «условности» для передачи пустых значений на сервер - я привык проверять наличие переменных, а затем обрезать их и проверять, например, на пустоту.

4 голосов
/ 08 декабря 2010

Значения, хранящиеся в $_GET и $_POST, могут быть только строками или массивами, если они явно не установлены во время выполнения. Если у вас есть строка запроса query=string, значение равно "string", если вы вместо этого используете: query=null, значение будет "null". Обратите внимание, что это для строки.

Если вы отправите: query=, значение будет "" или пустая строка. Обратите внимание на различия между isset и empty. isset будет истинным, если значение не равно нулю, тогда как empty будет истинным, если значение оценивается как false. Поэтому "" будет верно для и isset и empty.

Если вы просто хотите проверить, задан ли для параметра строки запроса строковое значение "null", вы можете просто проверить $_GET['query']=='null' (вы можете настроить регистр символов перед проверкой)

2 голосов
/ 05 октября 2012

С одним оператором if вместо двух:

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