0) { $punteggio_ottenuto = $valori[$chiave] * $peso / $max; } if (isset($decimali)) { $punteggi[$chiave] = truncate($punteggio_ottenuto,$decimali); } else { $punteggi[$chiave] = $punteggio_ottenuto; } } if (empty($punteggi)) { $punteggi = false; } return $punteggi; } public static function lineareSemplice(array $valori,$peso=1,$decimali=3,$options="") { $chiavi = array_keys($valori); $punteggi = []; foreach ($chiavi as $chiave) { $punteggi[$chiave] = $peso * (($options["prezzoBase"] - $valori[$chiave])/($options["prezzoBase"] - $options["prezzoSoglia"])); if (isset($decimali)) { $punteggi[$chiave] = truncate($punteggi[$chiave],$decimali); } else { $punteggi[$chiave] = $punteggi; } } if (empty($punteggi)) { $punteggi = false; } return $punteggi; } public static function incrementoLineare(array $valori,$peso=1,$decimali=3) { $max = max($valori); $min = min($valori); $punteggio_max = $peso; $punteggio_min = $min * $peso / $max; $chiavi = array_keys($valori); $punteggi = []; foreach($chiavi AS $chiave) { $valore = $valori[$chiave]; $punteggi[$chiave] = $punteggio_max - ((($punteggio_max - $punteggio_min) / ($max - $min)) * ($valore - $min)); $punteggi[$chiave] = ($punteggi[$chiave] > $punteggio_max) ? $punteggio_max : $punteggi[$chiave]; if (isset($decimali)) { $punteggi[$chiave] = truncate($punteggi[$chiave],$decimali); } else { $punteggi[$chiave] = $punteggi; } } if (empty($punteggi)) { $punteggi = false; } return $punteggi; } public static function onOff(array $valori,$peso=1) { $punteggi = []; foreach ($valori as $chiave => $valore) { $punteggi[$chiave] = 0; if (!empty($valore)) { $punteggi[$chiave] = $peso; } } if (empty($punteggi)) { $punteggi = false; } return $punteggi; } public static function tabellare(array $valori,array $options,$max = null, $decimali = null) { $chiavi = array_keys($valori); $ranges = $options["range"]; $punteggi = []; if (!empty($ranges)) { foreach ($chiavi as $chiave) { $valore = $valori[$chiave]; $punteggi[$chiave] = 0; foreach($ranges AS $range) { if ($valore >= $range["min"] && ($valore <= $range["max"] || empty($range["max"]))) { $punteggi[$chiave] = $range["punteggio"]; } } } } if (empty($punteggi)) { $punteggi = false; } else { if (!empty($options["riparametra"]) && $options["riparametra"] == "S" && !empty($max)) { $punteggi = self::proporzionale($punteggi,$max ?? 1,$decimali ?? 3); } } return $punteggi; } public static function bilineare(array $valori,$peso=1,$decimali=3,$options="") { $max = max($valori); $media = array_sum($valori)/count($valori); $chiavi = array_keys($valori); $punteggi = []; foreach ($chiavi as $chiave) { $punteggio_ottenuto = 0; $valore = $valori[$chiave]; if ($max>0) { if ($valore > $media) { $punteggio_ottenuto = ($options + (1 - $options) * (($valore - $media) / ($max - $media))) * $peso; } else { $punteggio_ottenuto = ($options * ($valore / $media)) * $peso; } } if (isset($decimali)) { $punteggi[$chiave] = truncate($punteggio_ottenuto,$decimali); } else { $punteggi[$chiave] = $punteggio_ottenuto; } } if (empty($punteggi)) { $punteggi = false; } return $punteggi; } public static function quadratica(array $valori,$peso=1,$decimali=3,$options="") { $max = max($valori); $chiavi = array_keys($valori); $punteggi = []; foreach ($chiavi as $chiave) { $punteggio_ottenuto = 0; if ($max>0) { $punteggio_ottenuto = pow(($valori[$chiave] / $max),$options) * $peso; } if (isset($decimali)) { $punteggi[$chiave] = truncate($punteggio_ottenuto,$decimali); } else { $punteggi[$chiave] = $punteggio_ottenuto; } } if (empty($punteggi)) { $punteggi = false; } return $punteggi; } public static function convertInversaForScore($valori,$riferimento) { $return = []; foreach($valori AS $id => $valore) { $return[$id] = 100 - (($valore * 100) / $riferimento); } return $return; } public static function getFormule() { global $config; return jsonToArray($config["jsonFolder"]."/math-formule.json"); } } ?>