1

我正在尝试获取我的 url 中显示的最后一个变量名称,并使用它来确定我的页面上显示的内容。例如,这是我的网址:

http://mysite.php/catalog/?department=123&category=456&sub_category=789

如果 URL 显示的是,sub_category那么我想显示所有被视为子类别的内容。但是,如果 url 只显示:

http://mysite.php/catalog/?department=123&category=456

然后我想显示仅与类别有关的内容。

一旦获得最后一个变量名称,我将使用 switch 语句来显示内容。我一直在使用这段代码,但它只得到第一个变量名而不是最后一个?

switch(key($_GET))
{
    case 'department':
        print('show department');
        break;
    case 'category':
        print('show category');
        break;
    case 'sub_category':
        print('show sub_category');
        break;
}

也许这不是最好的方法,如果你有比使用 switch 语句更好的方法,请告诉我;)

4

3 回答 3

5

不要依赖查询字符串参数的顺序。更好的方法是按特定顺序检查参数是否存在:

if (isset($_GET["sub_category"]))
{
    print('show sub_category');
}
elseif (isset($_GET["category"]))
{
    print('show category');
}
elseif (isset($_GET["department"]))
{
    print('show department');
}
else
{
    print('show error');
}
于 2012-12-20T19:42:48.493 回答
2

在您的类别案例中添加一个条件,如下所示:

case 'category':
  if (isset($_GET['sub_category'])) {
    print('show sub_category');
  }  else {
    print('show category');
  }
  break;
于 2012-12-20T19:42:40.527 回答
0

如果您的$_SERVER配置正确,我会说最好的方法是:

<?php

$qs = $_SERVER['QUERY_STRING'];
parse_str($qs, $data);
$keys = array_keys($data);
$last = count($keys)-1;

echo $keys[$last];
于 2012-12-20T19:46:08.760 回答