ciao a tutti
io ho un array multidimensionale
vorrei eseguire la somma dei valori a parità di mese....codice:[1] [mese] => 10 [valore] => 156 [2] [mese] => 8 [valore] => 251 [3] [mese] => 3 [valore] => 147 [4] [mese] => 10 [valore] => 369 ecc
ciao a tutti
io ho un array multidimensionale
vorrei eseguire la somma dei valori a parità di mese....codice:[1] [mese] => 10 [valore] => 156 [2] [mese] => 8 [valore] => 251 [3] [mese] => 3 [valore] => 147 [4] [mese] => 10 [valore] => 369 ecc
Griggio Claudio
Troppo semplice
Supposto $array il tuo array dati, in $result avrai un array la cui chiave è il mese e il valore la sommatoria
Codice PHP:
<?php
$array=array(
array('mese'=>1, 'valore'=>140),
array('mese'=>2, 'valore'=>10),
array('mese'=>3, 'valore'=>40),
array('mese'=>1, 'valore'=>540),
array('mese'=>4, 'valore'=>160),
array('mese'=>5, 'valore'=>170),
array('mese'=>4, 'valore'=>80),
array('mese'=>5, 'valore'=>90)
);
$result=array();
foreach ($array as $value)
if(isset($result[$value['mese']]))
$result[$value['mese']]+=$value['valore'];
else
$result[$value['mese']]=$value['valore'];
print_r($result);
?>![]()
Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
Lavori e Lavoretti
Così si può evitare anche l'if:Originariamente inviato da Grino
Troppo semplice
Supposto $array il tuo array dati, in $result avrai un array la cui chiave è il mese e il valore la sommatoria
Codice PHP:
<?php
$array=array(
array('mese'=>1, 'valore'=>140),
array('mese'=>2, 'valore'=>10),
array('mese'=>3, 'valore'=>40),
array('mese'=>1, 'valore'=>540),
array('mese'=>4, 'valore'=>160),
array('mese'=>5, 'valore'=>170),
array('mese'=>4, 'valore'=>80),
array('mese'=>5, 'valore'=>90)
);
$result=array();
foreach ($array as $value)
if(isset($result[$value['mese']]))
$result[$value['mese']]+=$value['valore'];
else
$result[$value['mese']]=$value['valore'];
print_r($result);
?>![]()
Codice PHP:
<?php
$array=array(
array('mese'=>1, 'valore'=>140),
array('mese'=>2, 'valore'=>10),
array('mese'=>3, 'valore'=>40),
array('mese'=>1, 'valore'=>540),
array('mese'=>4, 'valore'=>160),
array('mese'=>5, 'valore'=>170),
array('mese'=>4, 'valore'=>80),
array('mese'=>5, 'valore'=>90)
);
$result=array();
foreach ($array as $value) {
@ $result[$value['mese']]+=$value['valore'];
}
print_r($result);
?>
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Chiedo scusa ma credo che io abbia un errore nella popolazione dell'array
è corretto così?codice:$scadenze = array(); chiamata a mysql...... while ($rowMesi = mysql_fetch_array($resultMesi)) { $mese = $rowMesi['mese']; $valore = $rowMesi['inconsegna']; $scadenze[] = array('mese' => $mese, 'valore' => $valore); }
Griggio Claudio
ho trovato questa soluzione, sembra che funzioni
Codice PHP:
array_push($scadenze, array('mese' => $mese, 'valore' => $valore));
Griggio Claudio
un'altra domanda:
sarebbe tanto più complicato se l'array avrebbe una terza dimensione?
in pratica averecodice:$array=array( array('mese'=>1, 'valore'=>140, 'reparto'=> 'A'), array('mese'=>2, 'valore'=>10 'reparto'=> 'B'), array('mese'=>3, 'valore'=>40 'reparto'=> 'B'), array('mese'=>1, 'valore'=>540 'reparto'=> 'A'), array('mese'=>4, 'valore'=>160 'reparto'=> 'B'), array('mese'=>5, 'valore'=>170 'reparto'=> 'A'), array('mese'=>4, 'valore'=>80 'reparto'=> 'B'), array('mese'=>5, 'valore'=>90 'reparto'=> 'A') );
un risultato tipo
mese1 | repA valore | repB valore
mese2 | repA valore | repB valore
mese3 | repA valore | repB valore
....
Griggio Claudio
Se "avrebbe" fosse molto più complicato, se "avesse" fosse un po' più semplice...e bastasse modificare un po' lo script originale.Originariamente inviato da griggioclaudio
sarebbe tanto più complicato se l'array avrebbe una terza dimensione?![]()
![]()
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)