Controlli e Contatori
Controlli e Contatori postato il 14/07/2008 19:35:41 nel forum programmazione, open source e hosting e modificato da blancks il 14/07/2008 19:36:25
In parole povere: necessito di eseguire determinati controlli (gli stessi) su più dati.
Il Problema non è come farlo, fin'ora non c'è nulla in cui non sono riuscito, il mio dubbio è quale delle soluzioni è più performante delle due che sto per esporre (sto ottimizzando di pignoleria pura un sistema servendomi di buone norme di programmazione che ho trovato in giro presso servizi di hosting seri, ottimizzando così il più possibile gli script), non avendo trovato nulla che mi chiarisse cosa fosse meglio fare nel mio singolo caso mi rivolgo a voi, popolo di programmatori di gdr-online.com :-P
-La prima, quella che ho adottato, è questa: in pratica metto tutto quanto in un array e poi tramite un for scorro il vettore di dati eseguendo i controlli richiesti
# Controllo Punti e Status Pg
$Ceck_NumericValue = array(
$Salute, // 0
$Salute_Max, // 1
$Mana, // 2
$Mana_Max, // 3
$Fede, // 4
$Fede_Max, // 5
$Apprendimento,// 6
$Abilita, // 7
$Forza, // 8
$Mente, // 9
);
for ($i = 0; $i <= 9; ++$i){
switch ($i){
case 0: $Num_cecked = 'Salute'; break;
case 1: $Num_cecked = 'Salute Massima'; break;
case 2: $Num_cecked = 'Mana'; break;
case 3: $Num_cecked = 'Mana Massimo'; break;
case 4: $Num_cecked = 'Fede'; break;
case 5: $Num_cecked = 'Fede Massima'; break;
case 6: $Num_cecked = 'Punti Apprendimento'; break;
case 7: $Num_cecked = 'Punti Abilità'; break;
case 8: $Num_cecked = 'Atletica'; break;
case 9: $Num_cecked = 'Intelletto'; break;
}
if (!is_numeric($Ceck_NumericValue[$i])){
$Errore .= "<b>".$Num_cecked."</b>: il valore non è numerico.<br>";
}elseif ($Ceck_NumericValue[$i] < 0){
$Errore .= "<b>".$Num_cecked."</b>: superato valore minimo di 0.<br>";
}
$Valore_1 = 0;
$Valore_2 = 0;
switch ($i){
case 1:
$Valore_1 = $Ceck_NumericValue[$i-1];
$Valore_2 = $Ceck_NumericValue[$i];
$Err = 'Salute';
break;
case 3:
$Valore_1 = $Ceck_NumericValue[$i-1];
$Valore_2 = $Ceck_NumericValue[$i];
$Err = 'Mana';
break;
case 5:
$Valore_1 = $Ceck_NumericValue[$i-1];
$Valore_2 = $Ceck_NumericValue[$i];
$Err = 'Fede';
break;
}
if ($Valore_1 > $Valore_2){
$Errore .= "<b>Status</b>: ".$Err." ha superato il suo valore massimo (".$Err." Max)<br>";
}
} // for
La seconda invece sarebbe quella di ripetere manualmente il controllo per ogni variabile, senza avvalersi dell'array, del ciclo e forse anche senza switch scrivendo per ogni variabile il corrispettivo controllo con tanto di if e di elseif.
Grazie in anticipo a tutti coloro che interverranno :)
Pagine → 1
14/07/2008 19:40:06
Ciao,
fare tutto a mano non mi sembra abbia molto senso, ma anche il codice che hai esposto è molto ridondante.
Hai provato un
while (list ($chiave,$valore) = each ($array)) {...}
?
dovrebbe essere molto più adatto per il lavoro che devi svolgere :)
Saluti 👋
14/07/2008 20:25:30
Si, effettivamente sembra molto più pratico e meno ridondante così, grazie :-)
(posto il codice, si sa mai che qualcuno un giorno capita nella stessa situazione xD)
$Ceck = array(
'Salute' => $Salute,
'Salute_Max' => $Salute_Max,
'Mana' => $Mana,
'Mana_Max' => $Mana_Max,
'Fede' => $Fede,
'Fede_Max' => $Fede_Max,
);
while (list($chiave, $valore) = each($Ceck)){
$Stats = $chiave;
$Setting = $valore;
$Max_Setting = current($Ceck);
echo $Stats.": ".$Setting."/".$Max_Setting."<br />";
next($Ceck);
// etc etc.. con i controlli miei...
}
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
AlterEgo ↗
Project Entropy ↗
Raja Dunia ↗