Así es como se me ocurre sin darle muchas vueltas
Código PHP:
$tmp = array();
foreach ($linea as $l)
{
if ( empty($tmp[ $l['clase'] ]) )
{
$tmp[ $l['clase'] ] = array();
$tmp[ $l['clase'] ]['cantidad'] = $l['cantidad'];
$tmp[ $l['clase'] ]['detalle'] = $l['detalle'];
$tmp[ $l['clase'] ]['clase'] = $l['clase'];
}
else
{
$tmp[ $l['clase'] ]['cantidad'] += $l['cantidad'];
}
}
$orden = $tmp;
/*
$orden = array();
foreach ($tmp as $l)
{
$orden[] = $l;
}
*/
Ahi está, creo que este si es el bueno, ora si, ora si. Seguramente ya habrás captado la idea de como se ordenan los arreglos, verdad. Sino, también puedes darle una revisara a array_multisort o usort. Espero te haya ayudado.
Saludos