2016-05-09 12 views
-1

私はレベル(1-10)のリストを持ち、XP_NEEDED列を持っているテーブルをMySQLデータベースに持っています。すでに数字があります。その数字からレベルを見つけたい(数字はXPです)。私は次のレベル次のようにそのように高い場合、xp_neededレベルabovesという高いその現在のレベルよりも高いが開始されない場合、それはチェックXPから正しい行を取得するにはどうすればよいですか?

Example (Short): 
if ($xpLookingFor >= 100 && $xpLookingFor < 200) // Checks if not high as level 2 { 
    return '1'; // Would be returning Level1 
} 
else if ($xpLookingFor >= 200 && $xpLookingFor < 300) // Checks if not high as level 3 { 
    return '2'; // Would be returning Level2 
} 

...以下の方法でこれを行う方法を知っていますifステートメントはそれを処理します。

しかし、この方法には、短縮する可能性のあるコードがたくさんありますが、これを行うにはどうすればよいでしょうか?このためにmysqlの機能が組み込まれていますか?

+0

ここでは、回答は良好だが解決されていない[件数](http://stackoverflow.com/users/6276855/thegod39)があります。該当する場合、回答を正しいものとしてマークしてください。そうでない場合は、何も返さずに多くの人々があなたを助けてくれます。これを行う方法がわからない場合は、[this](http://stackoverflow.com/help/someone-answers)を参照してください。 – camelCase

答えて

0

elseifを使用しているため、ifの最初の部分は必要ありません。このようなものをスタックすることができます。

function getLevel($xpLookingFor){ 
    if ($xpLookingFor < 100){ 
     return 0; 
    } 
    else if ($xpLookingFor < 200){ 
     return 1; 
    } 
    else if ($xpLookingFor < 300){ 
     return 2; 
    } 
    else if ($xpLookingFor < 375){ 
     return 3; 
    } 
    else if ($xpLookingFor < 400){ 
     return 4; 
    } 
    else { 
     return 'MAX!'; 
    } 
} 

See example on IdeOne

2

イムこれはあなたが質問を必要とするものであるかどうかわからないが、あまりにも明らかではありません。

<?php 
function getLevel($xp, $maxLevel) { 
    for($check = 1; $check < $maxLevel; $check++) 
     if ($xp >= ($check*100) AND $xp < ($check*100)+100) return $check; 
    return $maxLevel; 
} 

//Param #1 is the xp level and #2 is the max level 
echo getLevel(503, 10); // returns 5 
echo getLevel(123, 10); //returns 1 
echo getLevel(1405, 20); //returns 14 
echo getLevel(1405, 10); //returns 10 
?> 
+0

いいえ解決策+1、唯一の問題は、各レベルが100の倍数でない場合です。これはうまくいかないことですが、それが問題であるかどうかは不明です。 –

関連する問題