Si hai ragione scusami, chiedevo info di HTML nella sezione errata, pardon
Ad ogni modo, ho fatto una bozza del codice in una maniera alternativa rispetto a come avevo fatto in precedenza.
Come ti pare?
<?php
$lunghezze_pezzi = array ("3000", "2000", "500", "800"); //array lunghezze pezzi
$quantita = array ("5", "5", "5", "5"); //array quantità
$tubo_corrente = array (); //memorizzo in che modo vengono tagliato il tubo
$risultato = array(); //array composto dai vari array dei tubi tagliati
$sfridi = array (); //verifico gli sfridi di verga in verga
$tubo = 5800; //lunghezza iniziale tubo
$verghe_tagl = 0; //numero di verghe utilizzate
for($i=0; $i<count($lunghezze_pezzi); $i++){ //scorrimento array lunghezze
for($j=0; $j<count($quantita); $j++){ //scorrimento array quantità
if($i!=0){ $n=$lunghezze_pezzi[$i-1]; //variabile per verifica valore maggiore
}else $n=0; //se sono al primo ciclo la variabile per la verifica del valore maggiore rimane a 0
if($lunghezze_pezzi[$i] > $n && $quantita[$j] != 0){ //verifico che il pezzo abbia una lunghezza maggiore del precedente e che la sua quantità non sia 0
$n=$lunghezze_pezzi[$i]; //aggiungo la dimensione più lunga dei tubi da tagliare alla variabile di inserimento
}
if($tubo > $n){ //controllo che il tubo abbia la dimensione necessaria al taglio di quel pezzo
$tubo=$tubo-$n; //taglio il tubo togliendo la quantità tagliata
$quantita[$j]=$quantita[$j]-1; //diminuisco di 1 la quantità del tubo tagliato
array_push($tubo_corrente, $n); //inserisco nell'array dei pezzi tagliati in ogni verga la dimensione del pezzo appena tagliato
}else{
for($k=0; $k<count($lunghezze_pezzi); $k++){ //verifico se ci sono altri pezzi da poter tagliare nel tubo
if($tubo > $lunghezze_pezzi[$k] && $quantita[$k] != 0) $temp=1; //se ce ne sono metto la variabile di controllo a 1
else{
$temp=0; //se non ce ne sono la variabile andrà a 0
$verghe_tagl += 1; //dato che il tubo è stato completamente tagliato, aumento la quantità delle verghe utilizzate di 1
array_push($sfridi, $tubo); //memorizzo lo sfrido della verga appena tagliata
$tubo = 5800; //riporto la variabile tubo alla lunghezza max dato che cambierò tubo
}
}
if($temp=0){ //verifico che non ci siano più pezzi che ci possano stare nello sfrido
array_push($risultato, $tubo_corrente); //inserisco l'array dei pezzi tagliati nel tubo all'interno dell'array che conterrà tutti i tubi tagliati
$tubo_corrente=array(); //riporto l'array del tubo corrente a 0 in modo che si possa iniziare un altro tubo da capo
}
}
}
}
for($z=0; $z<count($lunghezze_pezzi); $z++){ //controllo se ci sono ancora dei pezzi da tagliare
if($quantita[$z] !=0) $x=1; //se ne restano altri metto la variabile x a 1
}
if($x=0){
echo $risultato; //stampo come vengono tagliati i tubi
echo $verghe_tagl; //stampo il numero di verghe utilizzate
}
?>