首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP GET问题:如何设置不在查询字符串中的变量值?

PHP GET问题:如何设置不在查询字符串中的变量值?
EN

Stack Overflow用户
提问于 2011-04-02 03:41:24
回答 4查看 1.4K关注 0票数 1

如果参数存在,我知道如何从查询字符串中获取值:

代码语言:javascript
运行
复制
$hop = $_GET['hop'];

但是如果它不在查询字符串中,我还需要设置一个默认值。我试过了,但不起作用:

代码语言:javascript
运行
复制
$hop = $_GET['hop'];

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

请帮助我处理查询字符串有和没有"hop“参数的情况,以及如果有但没有定义的情况:

代码语言:javascript
运行
复制
example.com/?hop=xyz

&

代码语言:javascript
运行
复制
example.com/

&

代码语言:javascript
运行
复制
example.com/?hop=

附言我不知道我在做什么,所以如果你解释给我,请包括准确的代码为我添加到我的PHP页面。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-02 04:26:32

您已经得到了繁琐的解决方案。在使用URL或表单参数时,您通常也希望将空字符串或零视为缺失值。然后,您可以使用以下替代语法:

代码语言:javascript
运行
复制
$hop = $_GET["hop"]   or   $hop = "hardvalue";

它之所以能工作,是因为=or具有更高的优先级,而且使用额外的空格更容易阅读。

从PHP 5.3开始,还可以使用:

代码语言:javascript
运行
复制
$hop = $_GET["hop"]  ?:  "hardvalue";

这里的优点是,这种语法不会引起php通知,这对调试很有用。

票数 1
EN

Stack Overflow用户

发布于 2011-04-02 03:42:58

使用array_key_exists

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2011-04-02 03:43:08

仔细考虑了一下,决定它应该更健壮一些:

代码语言:javascript
运行
复制
$hop = 'hardvalue';
if (array_key_exists('hop', $_GET)) {
    if (!empty($_GET['hop'])) { $hop = $_GET['hop']; }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5518057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档