ti spiego come procederei io...
salvi in un array unico il contenuto di tutti i tag di tutte le righe della tabella in modo da avere
$array[0] = tag1riga1
$array[1] = tag2riga1
...
$array[n] = tagNrigaN
poi ti crei un'altro array che conterà gli elementi singoli e il numero di volte che sono contenuti
qualcosa tipo
codice:
$ris=Array();
$esclusi=Array();
for($i=0; $<count($array); $i++){
$count=0;
if(!in_array($array[$i], $esclusi)){//se non ho già eseminato l'elemento procedo
for($j=$i+1;$j<count($array);$j++){
if($array[$i]==$array[$j]) $count++;
}
array_push($ris, Array($array[$i], $count));
array_push($esclusi, $array[$i]);
}
}
perfezionando e provando a vedere se funziona ti dovresti ritrovare un array così fatto:
$ris = Array(Array(tagXrigaX, 2), Array(tagYrigaY, 43), Array(tagZrigaZ, 21));
ora puoi scegliere tu il modo migliore per orrenere l'output...se un array di array, un array di oggetti, due array distinti uno con i pesi e uno con i tag....sbizzarisciti