首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用列表爆炸时未定义的偏移量

使用列表爆炸时未定义的偏移量
EN

Stack Overflow用户
提问于 2013-02-11 18:15:22
回答 3查看 1.4K关注 0票数 1

我试着用列表爆炸对类别和子类别进行排序,但是

未定义偏移量: 1

这是代码的一部分

代码语言:javascript
复制
$squery = $_SERVER['QUERY_STRING'];
$smarty->assign('query', $squery);
list($str, $trash) = explode('&', $squery, 2);
list($category, $subcategory) = explode('=', $str, 2);
switch($category)
    {
        case 'locale':
            $_SESSION['locale'] = $subcategory;
            checklocale();
            header('Location:'.($_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER'] : '.'));
            break;
        default:
            include 'main.php';
            break;
    }

你能告诉我我做错了什么吗

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-11 18:23:10

似乎您的查询字符串中没有一个&,因此您可以使用单个项返回一个数组,从而导致list()抛出通知。

你可能想:

  • 验证$_SERVER['QUERY_STRING']中确实有一个值
  • 考虑使用类似于parse_str()的方法来解析字符串中的变量
  • 单独验证查询字符串中的值是否存在。

您还可以考虑使用$_GET而不是$_SERVER['QUERY_STRING']来更直接地访问参数。如果参数以错误的顺序传递,则当前的方法很容易中断。

票数 3
EN

Stack Overflow用户

发布于 2013-02-11 18:22:49

你能告诉我我做错了什么吗

好吧,我知道大多数时候,当您试图在数组中定义一个非索引字符时,就会出现Undefined offset:错误。例如,$var = "foo";现在,如果您是echo $var[3];,您将得到相同的错误,因为当3是“foo”的偏移量时,它只有三个字符,即从02

如果你给出了一个有限的代码,我怀疑问题就在explode('&', $squery, 2);的某个地方。

票数 0
EN

Stack Overflow用户

发布于 2013-02-11 18:26:09

只需检查locale是否已在QUERY_STRING上设置,即可完成此操作。

喜欢

代码语言:javascript
复制
if(isset($_GET['locale'])){
         $_SESSION['locale'] = $subcategory;
        checklocale();
        header('Location:'.($_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER'] : '.'));

}else{

     include 'main.php';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14818285

复制
相关文章

相似问题

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