2012-03-19 90 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语句的答案是远远超过这个