Sommare valori di un array per chiave in PHP
In pratica, abbiamo un array associativo, composto da record chiave:valore.
Visualizzo questi record in una tabella, e alla fine voglio stampare la somma del campo valore.
Tutto ciò senza fare somme ad ogni ciclo.
In verità è più difficile spiegarlo a parole che vedere il risultato.
In PHP possiamo usare due funzioni per fare la somma di chiave:
- array_column
- array_sum
La prima restituisce un altro array con i valori del campo passato come secondo argomento; il secondo somma quei valori.
Scritto in codice:
$sumEntrate = array_sum(array_column($query, 'sum_entrate'));
Dove:
- $query è l'array estratto da una query sul db
- sum_entrate è il campo dell'array che vogliamo estrapolare e sommare
Giusto per farvi capire, la query è questa:
SELECT
YEAR(mov_data) anno,
SUM(IF(mov_tipo = "E", mov_valore, 0)) AS sum_entrate,
SUM(IF(mov_tipo = "U", mov_valore, 0)) AS sum_uscite
FROM movimenti
WHERE mov_utente_fk = ?
GROUP BY anno
ORDER BY anno DESC, mov_tipo
Come vedete non abbiamo nessun ciclo per eseguire questa operazione; il ciclo lo faccio solo per visualizzare tutti i record, ma è una operazione distinta.
Enjoy!
php array_column array_sum array
Commentami!