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

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

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

Спасибо

Ответы

Ответ 1

Используйте 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

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

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

}

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

Ответ 3

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

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

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

Ответ 4

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

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