Нужна простая помощь php if else loop - PullRequest
0 голосов
/ 20 марта 2012

У меня есть такая функция

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

Спасибо.

Ответы [ 4 ]

4 голосов
/ 20 марта 2012

Вы можете использовать оператор 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;
}
4 голосов
/ 20 марта 2012

Как насчет создания массива и поиска соответствующего примера?

$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;
}
2 голосов
/ 20 марта 2012

Используйте оператор switch

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

это как оператор If с несколькими "elseif" и работает намного быстрее

1 голос
/ 20 марта 2012

Следующий код должен помочь:

    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 гораздо лучше, чем этот

...