2013-01-04 62 views
0

這裏是我的代碼我用switch語句包含特定的文件,但它包含了「默認」,也

<?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; 
     } 
     ?> 

所以,當我嘗試存取權限的情況下「NZ」從它也包括從頂部默認。那麼我怎麼能只包含'nz'的情況呢?

回答

4

嘗試將默認語句移動到第一個switch語句的底部。 switch語句沿着每個案例路徑直行,因此需要break關鍵字。無論如何,默認情況下都會執行。將它放在底部將確保只有在案例失敗時才能執行。

+0

+1更好的解釋! –

1

據我瞭解,你想(通過ID包括文件)時提供遊戲參數忽略「頂部」。 嘗試添加IF語句來執行第一開關語句只有遊戲不提供(或不與你提供的情況下匹配[「Aventura的」,「新西蘭」]

而且你可以這樣做即:

$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'); 
+0

我在哪裏以及如何做到這一點? –

+0

我已經包含了源代碼來更好地解釋我的想法。 – 2013-01-04 17:37:48

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; 
    } 
    ?> 
+0

我已經試過了這不起作用!無論如何, –

0

(我曾嘗試添加此爲osulerhia的答案註釋,但不能和揣摩它可能會回答這個問題的海報如果我已經正確閱讀)。

我不知道我是否正確理解你的問題,如果osulerhia的答案在上面是你要找的。

您期待兩個單獨的GET變量(「id」和「game」),如果遊戲變量爲「nz」,則不希望顯示您用於「id 「?

如果這是正確的,那麼你需要添加一些邏輯來讓你的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((isset($_GET['game']) && $_GET['game'] != "nz") || (!isset($_GET['game']))) { *your original switch statement* } 
+0

因此,我總是在索引頁面上顯示標題和菜單,然後從菜單訪問這些變量。如果我點擊actiune,它包含一個actiune.php文件,比如說,它包含另一個調用另一個名爲'nz'的變量的鏈接,當它被調用時,它包含switch語句的默認情況。我可以刪除默認情況下,但它是我的索引頁面的內容需要顯示:) –

+0

它的工作原理,但我現在有一個CSS問題!謝謝 –