Variable comprise dans 1 intervalle

Résolu
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009 - 24 juin 2007 à 02:32
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009 - 24 juin 2007 à 18:12
Bonsoir,

Je souhaiterais savoir comment puis-je définir une variable $Level à partir d'une autre variable $XP comprise dans un intervalle.Je voudrais faire en sorte que si 0 < $XP < 1000 -> $Level 1, si 1000 < $XP < 2500 -> $Level 2...

0 -> 1
1000 -> 2
2500 -> 3
5000 -> 4
10000 -> 5
etc.

De plus je voudrais limiter $Level à 30.

Je vois comment faire avec un if... Mais je suis curieux de savoir s'il existe une autre méthode qui m'épargnerait justement d'écrire 30 if...
Peut-être avec un switch ? ... J'ai aussi pensé à une suite géométrique mais je ne sais pas trop comment écrire cela... Et je suppose que de toute façon cela doit être plus compliqué...

Merci d'avance

Aaron.

3 réponses

vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
24 juin 2007 à 09:29
Saell og blesuð

<?php
$xp=13850;
$limit=array(0,1000,2500,5000,10000,12500,15000);//[...]
$i=-1;
while(isset($limit[++$i])){
    if($limit[$i] < $xp && $xp < $limit[$i+1]){
        echo 'level='.($i+1);
    }
}
?>

Vilhjálms
Sigurðsdóttir aka Frëyjá
3
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
24 juin 2007 à 07:45
Non je vois pas d'autre solution, mais je suis étonné que tu arrive a 30 if,
est-ce que tes au courrant que l'on peut mettre plusieur condition dans un if ?

if ( $XP <= 1000 AND $XP >= 0 ) {
fait ce que tu ve
}

Mais sinon tu pe utiliser une formule mathématique

$XP / 1000 = $Level;
$Level = floor($Level);

Tout les 1000 Xp, le user gagne un level
et on arrondie le résultat à truc inférrieure pour que 5645 / 1000 = 5,654
                                                                               floor(5,654) = 5

faut encore mettre un param dans floor pour choisir l'unité de l'arrondie inférieure.

Si tu ve que plus le niveau est élevé, plus il est dur d'obtenir un level supplémentaire tu pe utiliser des fonction au carré par exemple ou plien d'autre truc mathématique dispo dans php, ou programme les toi meme si ce que tu ve n'est pas dispo.
Renseigne toi sur toutes les fonction mathématique dispo dans php, y 'en a un packet, logarithme et autre.

GRUNENBERGER Benoît
www.UnrealNetwork.net
0
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
24 juin 2007 à 18:12
Bonjour,

Merci à vous deux pour vos réponses.
J'ai adopté la solution de vilhjalms, elle était plus simple et plus efficace.

Bien à vous.

Aaron.
0
Rejoignez-nous