2011-04-01 23 views
1

我知道如何从查询字符串获取的价值,如果该参数存在:PHP GET问题:只有当它不在查询字符串中时,我如何设置变量值?

$hop = $_GET['hop']; 

但我还需要设置一个默认值,如果它不是在查询字符串。我想这和它没有工作:

$hop = $_GET['hop']; 

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

请帮我处理情况的查询字符串具有和不具备“跳”参数的情况下,如果它的存在,但没有定义:

example.com/?hop=xyz 

&

example.com/ 

&

example.com/?hop= 

PS我不知道我在做什么,所以如果你向我解释,也请包括我的确切代码添加到我的PHP页面。

回答

1

你已经有了这些繁琐的解决方案。使用URL或表单参数时,您经常希望将空字符串或零作为缺失值处理。然后,您可以使用此替代语法:

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

它的工作原理是因为=优先级较高的过or,并且更容易阅读与多余的空格。

从PHP 5.3开始它也可以使用:

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

的优势在这里的是,这句法不发出声音了PHP的通知,这对于调试非常有用。

+0

甜,我喜欢这个最好的,因为它简单和简单是优雅的。 – Dustin 2011-04-01 20:47:05

2

使用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. 
} 
2

想过这个问题多一点,并决定它应该是有点更强大的:

$hop = 'hardvalue'; 
if (array_key_exists('hop', $_GET)) { 
    if (!empty($_GET['hop'])) { $hop = $_GET['hop']; } 
} 
+0

我试过这个,它工作。谢谢。 – Dustin 2011-04-01 20:47:22

1

事实上,我会用

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

使用empty()而不是isset()照顾你的第三种情况,其中参数存在但未定义。

此外,在if ($hop = " ")=将需要更改为===指定,==测试相等。你的方式,if语句将永远运行,不管什么$hop平等。

+0

谢谢澄清=与==。 :) – Dustin 2011-04-05 01:52:48

相关问题