我知道如果参数存在,如何从查询字符串中获取值:
$hop = $_GET['hop'];
但我还需要设置一个默认值,如果它不在查询字符串中。我尝试了这个并没有用:
$hop = $_GET['hop'];
if ($hop = " ") {
$hop = 'hardvalue';
};
请帮我处理查询字符串有且没有“hop”参数的情况,如果它存在但未定义:
example.com/?hop=xyz
&安培;
example.com/
&安培;
example.com/?hop=
PS我不知道我在做什么,所以如果你向我解释,请包括我添加到我的PHP页面的确切代码。
答案 0 :(得分:2)
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 :(得分:2)
考虑一下它并决定它应该更健壮一点:
$hop = 'hardvalue';
if (array_key_exists('hop', $_GET)) {
if (!empty($_GET['hop'])) { $hop = $_GET['hop']; }
}
答案 2 :(得分:1)
实际上,我会用
$hop = !empty($_GET['hop']) ? $_GET['hop'] : 'default';
使用empty()
代替isset()
会处理您的第三种情况,即参数存在但未定义。
此外,在if ($hop = " ")
中,=
需要更改为==
。 =
分配,==
测试平等。你拥有它的方式,无论$hop
等于什么,if语句总是会运行。
答案 3 :(得分:1)
你已经得到了繁琐的解决方案。使用URL或表单参数时,您通常希望将空字符串或零视为缺少值。然后你可以使用这种替代语法:
$hop = $_GET["hop"] or $hop = "hardvalue";
它起作用的原因是=
优先于or
,并且使用额外的空格更容易阅读。
从PHP 5.3开始,也可以使用:
$hop = $_GET["hop"] ?: "hardvalue";
这里的优点是这种语法不会破坏php通知,这对调试很有用。