如何从我的URL中获得最后一个变量名,并在switch语句中使用它


How to get the last variable name out of my URL and use it in a switch statement?

我试图得到在我的url中显示的最后一个变量名,并使用它来确定我的页面上显示的内容。例如,下面是我的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语句更好的方法,请告诉我;)

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

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');
}

在你的分类中添加一个条件,如下所示:

case 'category':
  if (isset($_GET['sub_category'])) {
    print('show sub_category');
  }  else {
    print('show category');
  }
  break;

如果您正确配置了$_SERVER,我想说这样做的最佳方法是:

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