Optimiser ce bout de code ?

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

3 réponses

  1. Modérateur
    Peut être un petit remplacement :
    if($user[0]-> score < ($_POST['color']*10000 )) 

    0
    1. 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
      1. Modérateur
        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