Originariamente inviata da
telegio
ho fatto così e va
for($L=3;$L<23;$L++) {
for($J=3;$J<$L;$J++) {
$somma1[$L] += $minuti_totali_[$J];
}
}
grazie ad entrambi comunque
Gestisco ogni tanto alcuni programmatori. Se uno mi mostrasse un codice come il tuo lo manderei a quel paese.
Già all'esecuzione tira fuori dei "Notice: Undefined offset" perché tenti di fare una somma in un posto di un array che non esiste.
Codice PHP:
$somma1[$L] += $minuti_totali_[$J];
si puo' anche scrivere
Codice PHP:
$somma1[$L] = $somma1[$L] + $minuti_totali_[$J];
Per ogni posto dell'array quando fai la prima assegnazione, la parte destra della riga ( $somma1[$L] ) non ha alcun valore ovvero il posto dell'array non esiste ancora.
Per ovviare cio' puoi fare un ciclo che inizializza l'array finale tipo
Codice PHP:
$somma1 = array();
for($L=3;$L<23;$L++) {
$somma1[$L] = 0;
}
o
Codice PHP:
$somma1 = array();
for($L=3;$L<23;$L++) {
if (!isset($somma1[$L])) $somma1[$L] =0;
for($J=3;$J<$L;$J++) {
$somma1[$L] += $minuti_totali_[$J];
}
}
Ma comunque non funziona.
Codice PHP:
for($J=3;$J<$L;$J++)
Se $L=3 allora non si entra nel for di sopra e di conseguenza $somma1[3] = 0 e tutti gli altri posti hanno un valore errato.
Bisogna scrivere :
Codice PHP:
for($J=3;$J<=$L;$J++)
Penso si possa scrivere nel modo indicato da Alhazred e da KillerWorm.
Codice PHP:
$somma1 = array();
$somma = 0;
foreach($minuti_totali_ as $L => $m)
{ $somma += $m;
$somma1[$L] = $somma;
}
L'esperienza mi ha insegnato che quando si comincia a scrivere codice complicato per risolvere un problema tutto sommato semplice significa che si è sulla strada sbagliata e che bisogna ripartire da 0.
L'esperienza mi ha insegnato anche che quando c'è un codice funzionante più semplice del mio me lo segno, e ne adopero la tecnica.
Si migliora cosi.