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

StackOverflow https://stackoverflow.com/questions/4382669

Вопрос

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

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

Спасибо

Это было полезно?

Решение

Использовать 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.Для этого "" будет верным для и то , и другое isset и empty.

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

С одним утверждением, а не двумя:

if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
    $name= $_REQUEST['name'];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top