2012-03-19 14 views
0

を必要に応じて、私はそれが私が設定点に基づいて会員ランクを返します。この単純なPHP他のループヘルプは

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ポイントを持つ場合、その関数の戻り値はとなります。

    私はこのランクに基づいて変数を設定したいと思います。

    $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

答えて

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

+0

私はあなたが実際に何を望んでいるのか分かりません。 'cp_module_ranks_getRank()'関数が '$ affdays'の値を返すようにしますか? – jasonlfunk

+0

いいえ。cp_module_ranks_getRank()は、正しいBronzeのようなランク値を返します。しかし、新しい変数 '$ user_rank'を使用しました。私はPHPのnoobです。それは私がこの質問をした理由です。しかし今、あなたの新しい変数は私をもっと混乱させます。私はあなたが値を渡すところから意味します。あなたのコードは私のcp_module_ranks_getRank()関数との接続がありません。 – user1091558

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複数のifまたはswitch文よりもはるかに優れています – Robbie

+0

こんにちは、その関数を変数に代入する方法を教えてください。このように使う必要がありますか? '$ rank = cp_module_ranks_getRank($ uid);'とデフォルトのアフィーメント値はどうですか? – user1091558

+0

これは大丈夫です。私はちょうど配列のキーと対応する値として日数としてランクを割り当てています。 'array_key_exists()'を使って配列に対応するキーが存在しないかどうかテストし、必要に応じてデフォルト値を代入するのはなぜですか? – rjz

2

は、switch文

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

を使用して、複数の "のelseifさん" とIfステートメントのようなものだし、それが

+0

とはるかに読みやすいです。 – vascowhite

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

EDIT:switch文の答えは、なぜあなたは、配列を使用していけない、この1