我试着用列表爆炸对类别和子类别进行排序,但是
未定义偏移量: 1
这是代码的一部分
$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;
}你能告诉我我做错了什么吗
发布于 2013-02-11 18:23:10
似乎您的查询字符串中没有一个&,因此您可以使用单个项返回一个数组,从而导致list()抛出通知。
你可能想:
$_SERVER['QUERY_STRING']中确实有一个值parse_str()的方法来解析字符串中的变量您还可以考虑使用$_GET而不是$_SERVER['QUERY_STRING']来更直接地访问参数。如果参数以错误的顺序传递,则当前的方法很容易中断。
发布于 2013-02-11 18:22:49
你能告诉我我做错了什么吗
好吧,我知道大多数时候,当您试图在数组中定义一个非索引字符时,就会出现Undefined offset:错误。例如,$var = "foo";现在,如果您是echo $var[3];,您将得到相同的错误,因为当3是“foo”的偏移量时,它只有三个字符,即从0到2;
如果你给出了一个有限的代码,我怀疑问题就在explode('&', $squery, 2);的某个地方。
发布于 2013-02-11 18:26:09
只需检查locale是否已在QUERY_STRING上设置,即可完成此操作。
喜欢
if(isset($_GET['locale'])){
$_SESSION['locale'] = $subcategory;
checklocale();
header('Location:'.($_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER'] : '.'));
}else{
include 'main.php';
}https://stackoverflow.com/questions/14818285
复制相似问题