PHP GET Вопрос: Как установить значение переменной, только если оно отсутствует в строке запроса? - PullRequest
1 голос
/ 01 апреля 2011

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

$hop = $_GET['hop'];

Но мне также нужно установить значение по умолчанию, ЕСЛИ его нет в строке запроса.Я попробовал это, и это не сработало:

$hop = $_GET['hop'];

if ($hop = " ") {
  $hop = 'hardvalue';
};

Пожалуйста, помогите мне разобраться со случаем, когда строка запроса имеет и не имеет параметра "hop", и если он присутствует, но не определен:

example.com/?hop=xyz

&

example.com/

&

example.com/?hop=

PS Я не знаю, что делаю, поэтому, если вы мне объясните, пожалуйста, включите такжеТочный код для меня, чтобы добавить на мою страницу PHP.

Ответы [ 4 ]

2 голосов
/ 01 апреля 2011

Подумал об этом немного больше и решил, что он должен быть немного более устойчивым:

$hop = 'hardvalue';
if (array_key_exists('hop', $_GET)) {
    if (!empty($_GET['hop'])) { $hop = $_GET['hop']; }
}
2 голосов
/ 01 апреля 2011

использование array_key_exists

if (array_key_exists('hop', $_GET))
{
 // the key hop was passed on the query string.
 // NOTE it still can be empty if it was passed as ?hop=&nextParam=1

} 
else
{
 //the key hop was not passed on the query string.
}
1 голос
/ 02 апреля 2011

Вы уже получили сложные решения. При работе с параметрами URL или формы вам часто нужно обрабатывать пустую строку или нули как отсутствующие значения. Тогда вы можете использовать этот альтернативный синтаксис:

$hop = $_GET["hop"]   or   $hop = "hardvalue";

Это работает из-за более высокого приоритета = над or, и его легче читать с лишними пробелами.

Начиная с PHP 5.3 также можно использовать:

$hop = $_GET["hop"]  ?:  "hardvalue";

Преимущество здесь в том, что этот синтаксис не портит уведомления php, которые полезны для отладки.

1 голос
/ 01 апреля 2011

На самом деле, я бы использовал

$hop = !empty($_GET['hop']) ? $_GET['hop'] : 'default';

Использование empty() вместо isset() позаботится о вашем третьем сценарии, где параметр присутствует, но не определен.

Кроме того, в if ($hop = " ") значение = должно быть изменено на ==. = присваивает, == проверяет равенство. Как и у вас, оператор if всегда будет выполняться независимо от того, что равно $hop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...