<?php
class tableutils{
static function compareByName($a, $b){
return strcmp($a, $b);
}
static function tabella_riassunto ($valori,$cell1,$sort=true,$arr=false,$className='tabella_riassunto',$tot_righe=true,$classi="",$links=""){
/* Scorro l'array per trovare tutte le colonne possibili
* TODO: esiste un modo piĆ¹ elegante? */
foreach ($valori as $key => $val) { foreach ($val as $kr => $vr) $col[$kr] = $kr; }
if($sort) {
sort($col);
uksort($valori, 'tableutils::compareByName');
}
/* Inizio a scrivere la tabella*/
$table="<table class=\"$className\" celpadding=\"0\" cellspacing=\"0\">";
/* Scrivo le intestazioni */
$table .="<tr>";
$table .="<th>$cell1</th>";
$rex[0][] = $cell1;
/* Scrivo le intestazioni */
foreach ($col as $c) { $table .="<th>".$c."</th>";$rex[0][] = $c; }
/* Questa colonna serve per i totali */
if($tot_righe) $table .="<th>TOTALE</th>";
//else $table .="<th></th>";
$table .="</tr>";
if($tot_righe)$rex[0][] = "TOTALE";
/* Ciclo l'array*/
$count = 1;
foreach ($valori as $key => $val) {
$tot1=0;
$table .="<tr>";
$table .="<td class=\"nomi\">".$key."</td>";
$rex[$count][] = $key;
$count_col=1;
foreach ($col as $c){
if($links[$key][$c]){
if($classi[$count_col]) $table .="<td class=\"".$classi[$count_col]."\"><a href='".$links[$key][$c]."'>".$val[$c]."</a></td>";
else $table .="<td><a href='".$links[$key][$c]."'>".$val[$c]."</a></td>";
} else {
if($classi[$count_col]) $table .="<td class=\"".$classi[$count_col]."\">".$val[$c]."</td>";
else $table .="<td>".$val[$c]."</td>";
}
$rex[$count][] = $val[$c];
/* Faccio la somma dei valori degli elementi della riga */
$tot1 += $val[$c];
/* Faccio la somma usando come indice il nome della colonna */
$tot2[$c] += $val[$c];
$count_col++;
}
if($tot_righe){ $table .="<td class=\"tot1\">".$tot1."</td>";
//else $table .="<td class=\"tot1\"></td>";
$rex[$count][] = $tot1;
}
$table .="</tr>";
$count++;
}
/* Scrivo la somma salvata precedentemente*/
$table .="<tr>";
$table .="<td class=\"tot1\">TOTALE</td>";
$rex[$count][] = "TOTALE";
foreach ($tot2 as $t){
$table .="<td class=\"tot1\">".$t."</td>";
$rex[$count][] = $t;
$tot += $t;
}
if($tot_righe){
$table .="<td class=\"totfinal\">".$tot."</td>";
$rex[$count][] = $tot;
}
$table .="</tr>";
$table .="</table>";
if($arr) return $rex;
else return $table;
}
}
$arr = array("052 VARICELLA" => array("2015 m focolai" => 1, "2015 casi coinvolti" => 3));
tableutils::tabella_riassunto($arr);
preferences:
55.93 ms | 402 KiB | 5 Q