Optimiser ce bout de code ?

Fermé
benoitphp - Modifié par benoitphp le 26/05/2016 à 13:53
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 - 26 mai 2016 à 18:17
Bonjour, je cherche un moyen de raccourcir/optimiser ce code car j'ai plus de 100 lignes a faire et je pense au final avoir la mauvaise méthode.

un exemple :
 

$success = TRUE;

if(!intval($_POST['color'])){
$success = FALSE;
}
if($_POST['color'] == 1 && $user[0]-> score < 10000 ){
$success = FALSE;
}
if($_POST['color'] == 2 && $user[0]-> score < 20000 ){
$success = FALSE;
}
if($_POST['color'] == 3 && $user[0]-> score < 30000 ){
$success = FALSE;
}
if($_POST['color'] == 4 && $user[0]-> score < 40000 ){
$success = FALSE;
}
if($_POST['color'] == 5 && $user[0]-> score < 50000 ){
$success = FALSE;
}
if($_POST['color'] == 6 && $user[0]-> score < 60000 ){
$success = FALSE;
}
if($_POST['color'] == 7 && $user[0]-> score < 70000 ){
$success = FALSE;
}
if($_POST['color'] == 8 && $user[0]-> score < 80000 ){
$success = FALSE;
}


merci
A voir également:

3 réponses

NHenry Messages postés 15151 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 septembre 2024 333
26 mai 2016 à 13:58
Peut être un petit remplacement :
if($user[0]-> score < ($_POST['color']*10000 )) 

0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
26 mai 2016 à 13:59
Salut,

Un début de solution possible :
$success = true;

if (empty($_POST['color'])) {
    $success = false;
} else {
    if ($_POST['color'] > 0 && $_POST['color'] < 9 && $user[0]-> score < $_POST['color'] * 10000) {
        $success = false;
    }
}


Bonne journée,
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
26 mai 2016 à 18:17
Bonjour,

Sachant qu'il est préférable de récupérer "PORPREMENT" les variables AVANT de les utiliser...
comme ceci :
$color = !empty($_POST['color']) ? $_POST['color'] : null;


Tu peux ensuite faire :
 $success = $color && $user[0]->score < $color*1000 ? false : true;


nb: Ceci est l'écriture ternaire. Cela remplace les IF.
sa syntaxe correspond à :

$variable = condition(s) ? valeur_si_vraie : valeur_si_faux ;

0