0

这是我的代码

    <?php
    $id = isset($_GET['id']) ? $_GET['id'] : '';
    switch ($id) {
        default:include_once('default.php');
        break;
        case 'actiune':include('jocuri/actiune/index.php');
        break;
        case 'aventura':include('jocuri/aventura/index.php');
        break;
     }
     ?>
    <!--games-->
     <?php
     $game = isset($_GET['game']) ? $_GET['game'] : '';
     switch ($game) {
         case 'nz':include('jocuri/actiune/ninja-vs-zombie/index.php');
         break;
         case 'aventura':include('/jocuri/aventura/index.php');
         break;
      }
      ?>

因此,当我尝试从中访问 c​​ase 'nz' 时,它还包括顶部的默认值。那么我该怎么做才能只包含“nz”案例呢?

4

4 回答 4

4

尝试将默认语句移动到第一个 switch 语句的底部。switch 语句直接沿着每个 case 路径进行,因此需要 break 关键字。无论如何,默认案例将始终在案例中执行。将其放在底部将确保它仅在案例失败时才会执行。

于 2013-01-04T16:59:59.027 回答
1

据我了解,您希望在提供游戏参数时忽略“顶部”(包括id文件) 。仅在未提供游戏(或与您提供的案例['aventura', 'nz']不匹配)时尝试添加 IF 语句以执行第一个 switch 语句

此外,您可以执行以下操作:

$id = isset($_GET['id']) ? $_GET['id'] : '';
$game = isset($_GET['game']) ? $_GET['game'] : '';

$games = array('nz' => 'jocuri/actiune/ninja-vs-zombie/index.php',
               'aventura' => '/jocuri/aventura/index.php');

$ids = array('actiune' => 'jocuri/actiune/ninja-vs-zombie/index.php',
             'aventura' => '/jocuri/aventura/index.php');

if (array_key_exists($game, $games))
{
  include($games[$game]);
}
else if (array_key_exists($id, $ids))
{
  include($ids[$id]);
}
else include('default.php');
于 2013-01-04T17:06:21.417 回答
0

尝试这个

    <?php
$id = isset($_GET['id']) ? $_GET['id'] : '';
switch ($id) {

    case 'actiune':include('jocuri/actiune/index.php');
    break;
    case 'aventura':include('jocuri/aventura/index.php');
    break;
   default:include_once('default.php');
    break;
 }
 ?>
<!--games-->
 <?php
 $game = isset($_GET['game']) ? $_GET['game'] : '';
 switch ($game) {
     case 'nz':include('jocuri/actiune/ninja-vs-zombie/index.php');
     break;
     case 'aventura':include('/jocuri/aventura/index.php');
     break;
  }
  ?>
于 2013-01-04T17:09:56.027 回答
0

(我确实尝试将此添加为对 osulerhia 答案的评论,但不能并认为如果我正确阅读它可能会回答海报的问题)。

我不确定我是否正确理解了您的问题,以及以上 osulerhia 的答案是否是您正在寻找的。

您期望两个单独的 GET 变量(“id”和“game”),如果游戏变量是“nz”,您不想显示用于“id”的 switch 语句的默认值?

如果这是正确的,那么您需要为您希望您的 switch 语句如何播放添加某种逻辑。然后,您还需要考虑是否希望其他任何一个显示“nz”是否是“游戏”的值。您的逻辑(写得很清楚)目前是:

Is the id variable "actiune" -> include a file

Is the id variable "aventura" -> include a file

Is the id variable anything else -> include the default file

Is the game variable "nz" -> include a file

Is the game variable "aventura" -> include a file

如您所见,您的两个开关是完全独立的,您需要决定要显示什么以及何时显示它,例如,如果您希望一切都按上述方式工作,但不显示第一个开关的任何内容,如果游戏变量的值是“nz”,那么你可以将它包装在一个 if 语句中,例如:

if((isset($_GET['game']) && $_GET['game'] != "nz") || (!isset($_GET['game']))) { *your original switch statement* }
于 2013-01-04T17:26:53.517 回答