Bonjour,
je rencontre un petit soucis pour modeliser un besoin.

je dois retourner une valeur en fonction d'un intervalle.

de 0 à 100 je dois retourner 2
de 101 à 399 je dois retourner 7
de 400 à 799 je dois retourner 9

ainsi de suite.
en entree j´ai ce type de donnée qui est fourni par le client. y´a aucune logique pour permettre de faire un calcul mathematique.

je veux automatiser la valeur retourner quand on rentre un nombre
Exemple: le user entre 17 je verifie je trouve que 17 se trouve entre 0 à 100 et je retourne 2 automatiquement.

1 - je veux un modele de stockage de ce type d´information afin de pouvoir automatiser.
2 - je veux pas coder en dur du style

if($nbre>=0 && $nbre<=100)
{
        return 2;

}

merci d´avance

6 réponses


hello

en gros

if ( myNumber >= 0 && myNumber <= 100 ){
    return 2;
} elseif (myNumber >= 400 && myNumber < 800) {
    return 9;
} else {
    return 7;
};
tincode
Auteur

justement c'est ce que je veux pas faire car les valeurs peuvent changer. je veux que les valeurs de l'intervalle soient injectées automatiquement

Ok, mais automatisé comment ? via un formulaire, un stockage en BDD, un fichier JSON, une API, etc. ?

Auras-tu toujours 3 niveaux d'intervalle ? car sinon cela change tout.

Car au pire le modèle est là, il suffit juste de remplacé les valeurs fixe (nombre) par des variables et myNumber est déjà une variable ...

tincode
Auteur

je cherche dans un premier temps comment modeliser cette structure de stockage dans un fichier de config qui retourne un tableau

$myConfig = [0, 100, 400, 800];
$myNumber = $_POST["myValue"];

if ( $myNumber >= $myConfig[0] && $myNumbe <= $myConfig[1] ){
    return 2;
} elseif ($myNumbe >= $myConfig[2] && $myNumbe < $myConfig[3]) {
    return 9;
} else {
    return 7;
};

Salut,

En partant du principe que tes intervalles se suivent, tu peux les stocker dans un tableau du type :

$myConfig = [
    ... (autres valeurs)
    [400, 9],
    [101, 7],
    [0, 2]
];

et tu ajoutes une simple fonction qui lit les intervalles et renvoi la valeur souhaitée :

 function getValueForInterval(int $val, array $tab)
{
    foreach ($tab as $interval) {
        if ($val >= $interval[0]) {
            return $interval[1];
        }
    }
    return 0;
}

Maintenant, il ne reste plus qu'à appeler :

getValueForInterval($unNombre, $myConfig);