Ответ 1
if (isset($_REQUEST['param']))
{
// param was set in the query string
if(empty($_REQUEST['param']))
{
// query string had param set to nothing ie ?param=¶m2=something
}
}
Я хочу иметь возможность отличать существующие параметры строки запроса от нуля и отсутствующие параметры. Итак, части вопроса:
Спасибо
if (isset($_REQUEST['param']))
{
// param was set in the query string
if(empty($_REQUEST['param']))
{
// query string had param set to nothing ie ?param=¶m2=something
}
}
Или используйте array_key_exists
:
if(array_key_exists("myParam", $_GET)) {
}
Я никогда не интересовался "соглашениями" для передачи пустых значений на сервер - я привык тестировать наличие переменных, а затем обрезал их и тестировал для пустоты, например.
Значения, хранящиеся в $_GET
и $_POST
, могут быть только строками или массивами, если явно не задано во время выполнения. Если у вас есть строка запроса query=string
, значение равно "string"
, если вы используете: query=null
значение будет "null"
. Обратите внимание, что это для строки.
Если вы отправляете: query=
, значение будет ""
или пустая строка. Обратите внимание на различия между isset
и empty
. isset
будет истинным, если значение не равно нулю, тогда как empty
будет истинным, когда значение примет значение false
. Для этого ""
будет истинным для как isset
, так и empty
.
Если вы просто хотите проверить, был ли параметр строки запроса установлен на строковое значение "null"
, вы можете просто проверить $_GET['query']=='null'
(вы можете настроить регистр символов перед проверкой)
С одним оператором if вместо двух:
if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
$name= $_REQUEST['name'];
}