1

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ステートメントを使用するよりも良い方法がある場合は、私に知らせてください;)

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 に答える