No puede ser que no obtengas respuesta.. si le quitas la clave a $carro[...] se agregar los valores bien a ese arreglo.. y ahi es donde te das cuenta de que estas reescribiendo informacion.
Código PHP:
while($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
foreach ($cantidad as $clave => $valor) {
$carro[] = array (
'identificador'=>md5($id[$clave]),
'id'=>$id[$clave],
'cantidad'=>$valor,
'precio' => $row['precio']
);
}
}
echo "<pre>";
print_r($carro);
echo "</pre>";