Yo crearía un nuevo arreglo, usando ID como índice, de forma que se pueda verificar fácilmente.
Código PHP:
Ver original// Creas el array
// Recorres el que ya tienes
foreach($array as $elem) {
$id = $elem['id'];
if(isset($conIndices[$id])) { // Ya existe, sólo sumas cantidad
$conIndices[$id]['cantidad'] += $elem['cantidad'];
} else {
// No existe, lo agregas
$conIndices[$id] = $elem;
}
}