oppure questa, senza foreach
Codice PHP:
function get_level($array_of_levels, $user_value) {
/*
Restituisce il livello dell'utente sulla base del punteggio.
Parametri:
- $array_of_levels = matrice dei livelli possibili (la chiave è il punteggio minimo per accedere al livello)
- $user_value = punteggio dell'utente
*/
// ordina l'array dei livelli per chiave (in questo modo non è necessario passare una matrice ordinata)
ksort($array_of_levels);
// estrae le chiavi dell'array dei livelli
$keys = array_keys($array_of_levels);
// filtra l'array dei livelli sulla chiave
$level = array_filter($keys, function($k) use ($user_value) {
return $k <= $user_value;
});
// se il livello dell'utente è inferiore al minimo delle chiavi, restituisce il livello minimo
if (empty($level)) {
return array_pop(array_reverse($array_of_levels));
}
// restituisce il livello
return $array_of_levels[array_pop($level)];
};
$arrLivello = array (
100=>"Esperto",
10=>"Visitatore",
25=>"Principiante",
50=>"Intermedio",
500=>"Professionista",
);
$user_value = 102;
$level = get_level($arrLivello, $user_value);
var_dump($level);