2016-05-09 15 views
-1

Ich habe eine Tabelle in einer MySQL-Datenbank, die eine Liste von Ebenen (1-10) hat und eine XP_NEEDED-Spalte hat, ich habe bereits eine Nummer und ich möchte die Ebene von dieser Nummer finden (die Nummer ist ein XP), ich weiß, wie dies in der nachstehenden Art und Weise zu tun ...Wie bekomme ich die richtige Zeile von der 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 
} 

so überprüft er, ob seine höher als das aktuelle Niveau aber nicht so hoch wie die Ebene aboves xp_needed, wenn sie so hoch wie die nächste Stufe der nächsten If-Anweisung wird damit umgehen.

Aber dieser Weg hat eine Menge Code, der möglicherweise verkürzt werden könnte, was ist der beste Weg, dies zu tun? Gibt es eine eingebaute mysql-Funktion dafür?

+0

Sie haben hier eine [Anzahl von Fragen] (http:// Stackoverflow.com/users/6276855/thegod39), die gut beantwortet, aber nicht als gelöst markiert sind. Bitte beginnen Sie mit der Kennzeichnung der Antworten, falls zutreffend, ansonsten haben Sie viele Leute, die Ihnen helfen, ohne etwas dafür zu geben. Sehen Sie [dies] (http://stackoverflow.com/help/someone-answers), wenn Sie nicht wissen, wie dies zu tun ist. – camelCase

Antwort

0

Da Sie elseif verwenden, wird der erste Teil des If nicht benötigt, Sie könnten sie so etwas stapeln.

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

Ich bin nicht sicher, ob dies ist, was Sie brauchen Frage ist nicht ganz klar.

<?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

Gute Lösung +1, das einzige Problem ist, wenn jede Ebene nicht ein Vielfaches von 100 ist, würde dies nicht funktionieren, aber es ist unklar, ob das der Fall ist. –

Verwandte Themen