2012-03-19 87 views
0

我有這樣簡單的PHP的if else循環需要幫助

function cp_module_ranks_getRank($uid){ 
     return cp_module_ranks_pointsToRank(cp_getPoints($uid)); 
    } 

它返回基於點我設置成員級別的功能。 比如我設置有

  1. 250分=青銅
  2. 1000點=銀
  3. 2500點=黃金
  4. 10000點=鑽石
  5. 25000點=白金

所以如果用戶有11234點,那麼該函數返回值爲Diamond

現在我想根據這個排名設置一個變量。

$affdays是可變

我的意思是這樣

If user rank is Bronze $affdays = 30 
If user rank is Silver $affdays = 60 
If user rank is Gold $affdays = 90 
If user rank is Diamond $affdays = 180 
If user rank is Platinum $affdays = 360 
Default $affdays = 10 

感謝。

+0

更好的你爲什麼不使用數組? – safarov 2012-03-19 20:41:04

回答

4

您可以使用switch語句:

$user_rank = cp_module_ranks_getRank($id); 

switch($user_rank) { 
    case 'Bronze': 
     $affdays = 30; 
     break; 
    case 'Silver': 
     $affdays = 60; 
     break; 
    case 'Gold': 
     $affdays = 90; 
     break; 
    case 'Diamond': 
     $affdays = 180; 
     break; 
    case 'Platinum': 
     $affdays = 360; 
     break; 
    default: 
     $affdays = 10; 
} 
+0

嗨,謝謝..但是我的主要問題是我不知道如何在switch語句中使用'cp_module_ranks_getRank($ uid)'函數。我是否必須在該函數中分配'$ user_rank'變量?如果是的話如何? – user1091558 2012-03-19 20:49:11

+0

我不確定你真正想要什麼。你想'cp_module_ranks_getRank()'函數返回'$ affdays'的值嗎? – jasonlfunk 2012-03-19 21:04:53

+0

否.. cp_module_ranks_getRank()返回青銅色等級值,這是正確的。但是你使用了一個新的變量'$ user_rank'。我是一個PHP的菜鳥。這就是爲什麼我問這個問題。但是現在你的新變量讓我更加困惑......我是指你從何處傳遞值。你的代碼與我的cp_module_ranks_getRank()函數沒有關係。 – user1091558 2012-03-19 21:24:52

4

剛剛創建一個數組並查找相應的示例如何?

$rank = 'Bronze'; 
$rank_days = array(
    'Bronze' => 30, 
    'Silver' => 60 
    // etc 
); 

if (array_key_exists($rank, $rank_days)) { 
    $affdays = $rank_days[$rank]; // 30 
} else { 
    $affdays = 10; 
} 
+0

+1這比多個ifs或switch語句好得多 – Robbie 2012-03-19 20:45:15

+0

嗨,你能告訴我如何將該函數分配給一個變量嗎?我必須這樣使用嗎? '$ rank = cp_module_ranks_getRank($ uid);'那麼默認的affdays值呢? – user1091558 2012-03-19 20:56:28

+0

看起來沒問題。我只是將這些等級分配給一個數組的鍵和天數作爲相應的值;爲什麼不使用'array_key_exists()'測試數組中是否存在相應的鍵,並根據需要指定默認值? – rjz 2012-03-19 21:00:52

2

使用switch語句

switch ($user_rank) { 
    case "bronze": 
     //code 
    break; 
    case "silver": 
     //code 
    break; 
    default: 
     $affdays = 10; 
    break; 
    //and so on 
} 

這就像有多個 「ELSEIF的」 If語句,它工作得更快

+0

和更容易閱讀。 – vascowhite 2012-03-19 20:52:05

1

下面的代碼應該做的伎倆:

if (cp_module_ranks_getRank($user) === 'Bronze') { 
     $affdays = 30; 
    } else if (cp_module_ranks_getRank($user) === 'Silver') { 
     $affdays = 60; 
    } else if (cp_module_ranks_getRank($user) === 'Gold') { 

    ... 

    } else { 
     $affdays = 10; 
    } 

編輯:switch語句的答案是遠遠超過這個