2014-05-10 63 views
-3

(抱歉我的英文寫作不好)。我遇到了一個問題,我被一個if和else系統卡住了,它返回了你的級別。If&Else stuck on return

一切都很好,如果你有20次點擊它會告訴你,你是第2級,如果你有550點擊它會告訴你是第6級。但是當你點擊1500點時,它需要說9平,但它仍然會說8級。

我的代碼:

$levelown = 'Level 1'; 

function ifElse() { 

    global $levelown; 
    global $arrayIP; 

    if($arrayIP['clicks'] >= 0 && $arrayIP['clicks'] <= 49) 
     { 
      $levelown = 'Level 2'; 
     } 
    /* .... More if and elses with levels */ 

    // This is the problem, this will keep telling me that I'm level 8. 
    elseif($arrayIP['clicks']>=3000) 
     { 
      $levelown = 'Level ' . floor(($score['clicks']/1000)+8); 
     } 



and you are <strong><?php echo $levelown; ?></strong> 

謝謝你的幫助!

+0

您可以簡化它:擺脫所有'> ='測試。由於之前的測試是錯誤的,因此您知道該數字高於其範圍。 – Barmar

+0

謝謝,我現在知道那個floor()部分一直告訴我我是8級的,但我不知道如何解決它。 – RezaM

+2

適用於我:http://codepad.org/rJOnZndc – masterxilo

回答

2

,我從你當前的代碼看到的問題是,你有

elseif($arrayIP['clicks']>=3000) 
     { 
      $levelown = 'Level ' . floor(($score['clicks']/1000)+8); 
     } 

我認爲應該是

elseif($arrayIP['clicks']>=3000) 
     { 
      $levelown = 'Level ' . floor(($arrayIP['clicks']/1000)+8); 
     } 

因爲$score['clicks']不存在您將a路線最終達到8級

+0

這個問題說,他得到錯誤的水平,當點擊是1500.這種不正確的代碼只有當點擊> = 3000時運行。 – Barmar

+0

@Barmar:我的朋友他的問題確實說,但他的代碼是說 –

+0

謝謝你,我已經修好了,但還是謝謝! – RezaM

1

它可能更容易和更具有可讀性,使之成爲開關/ case語句,像這樣:

$highscore = $mysqli->query("SELECT id,name,clicks,ip,factory FROM highscore ORDER BY clicks DESC LIMIT 0,50 "); 
$ipquery  = $mysqli->query("SELECT id,name,clicks,ip,factory FROM highscore WHERE ip = '".$_SERVER['REMOTE_ADDR']."'"); 
$arrayIP  = $ipquery->fetch_array(); 

$levelown = 1; 

function ifElse() { 
global $levelown; 
global $arrayIP; 

    switch (true) { 
     case $arrayIP['click'] > 3000: 
      $levelown = floor(($arrayIP['click']/1000)+8); 
      break; 
     case $arrayIP['click']== 3000: 
      $levelown = 11; 
      break; 
     case $arrayIP['click'] >= 2000: 
      $levelown = 10; 
      break; 
     case $arrayIP['click'] >= 1500: 
      $levelown = 9; 
      break; 
     case $arrayIP['click'] >= 1000: 
      $levelown = 8; 
      break; 
     case $arrayIP['click'] >= 750: 
      $levelown = 7; 
      break; 
     case $arrayIP['click'] >= 500: 
      $levelown = 6; 
      break; 
     case $arrayIP['click'] >= 350: 
      $levelown = 5; 
      break; 
     case $arrayIP['click'] >= 200: 
      $levelown = 4; 
      break; 
     case $arrayIP['click'] >= 50: 
      $levelown = 3; 
      break; 
     case $arrayIP['click'] >= 0: 
      $levelown = 2; 
      break; 
    } 
    $levelown = "Level " . $levelown; 
} 
+0

謝謝你製作我的代碼更好,它的工作! – RezaM