Salve,
Oggi ho creato uno script (so che è programmato abbastanza da cani, ma speravo di finirlo molto rapidamente senza ragionarci troppo su, ed invece...), essenzialmente gli si passa un array con delle percentuali ed un valore numerico, a seconda di quel valore allora sceglie le possibili percentuali (per fare un esempio, se c'è una tempesta allora il tempo può cambiare solo in Pioggia, Vento o Nuvoloso) e genera un valore casuale per decidere la nuova condizione atmosferica.
Ora il problema è quando viene eseguita la funzione "changeweather" non entra nel ciclo while, o meglio ci entra una sola volta e poi esce subito...la cosa strana è che ho provato a sostituirlo con un for che avrebbe dovuto ciclare per 5 volte, senza alcuna condizione particolare, e non ha funzionato ugualmente...
Qualcuno sa perchè?
Codice PHP:
include "commons.inc.php";
function changeweather ($zone){
//Tempesta
if($zone[8]==0){
$allowed=array(1, 2, 5);
}
//Pioggia
elseif($zone[8]==1){
$allowed=array(0, 2, 5, 6);
}
//Vento
elseif($zone[8]==2){
$allowed=array(0, 1, 4, 5, 6);
}
//Nebbia
elseif($zone[8]==3){
$allowed=array(1, 2, 4, 5, 6);
}
//Neve
elseif($zone[8]==4){
$allowed=array(2, 3, 5);
}
//Nuvole
elseif($zone[8]==5){
$allowed=array(0, 1, 2, 3, 4, 5, 6);
}
//Sole
else{
$allowed=array(1, 2, 3, 5);
}
$compare=$zone[$allowed[0]];
print "Possibilità di ".$GLOBALS["w"][$allowed[0]].": 0 - $compare
";
for($i=1; $i<count($allowed); $i++){
$next=$compare+$zone[$allowed[$i]];
if($zone[$allowed[$i]]==0){
print "Possibilità di ".$GLOBALS["w"][$allowed[$i]].": 0
";
}
else{
print "Possibilità di ".$GLOBALS["w"][$allowed[$i]].": ".($compare+1)." - ".($next)."
";
}
$compare=$next;
}
print "</p>";
$b=1;
$weather=rand(0, $next);
print "Valore uscito: $weather
";
$sum=$zone[$allowed[0]];
$i=0;
//NON ENTRA IN QUESTO CICLO
while($b==1 AND $i<count($allowed)){
if($weather<=$sum){
$b=0;
$sum=$sum+$zone[$allowed[$i]];
}
else{
$i++;
$sum=$sum+$zone[$allowed[$i]];
}
print $allowed[$i]."
";
print $GLOBALS["w"][$allowed[$i]]."
";
return $allowed[$i];
}
}
$sql = "SELECT * FROM weathers";
$cont = mysql_query($sql,$GLOBALS["connessione"]) or die(mysql_error());
$i=0;
$j=0;
while($row = mysql_fetch_row($cont)){
for($i=0; $i<10; $i++){
$t[$j][$i]=$row[$i];
}
$j++;
}
for($j=0; $j<count($t); $j++){
$newweather=changeweather($t[$j]);
$sql="UPDATE weathers SET Current = '$newweather' WHERE `Luogo` = '".$t[$j][7]."'";
$cont = mysql_query($sql,$GLOBALS["connessione"]) or die(mysql_error());
}