Проверка нулевых и отсутствующих параметров строки запроса в PHP

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

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

спасибо

4 ответов


использовать 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
   }
}

или использовать array_key_exists:

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

}

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


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

если вы посылаете: query=, это значение будет "" или пустая строка. Обратите внимание на различия между isset и empty. isset будет true, если значение не null, а empty будет true, когда значение будет равно false. Поэтому!--7--> на и isset и empty.

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


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

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