No olvides que al quitar el corchete de los campos, debes recibir los valores de $_POST como variables simples, no arrays, tal vez sea eso lo último que te marca fallos. Esta es una forma en que lo haría yo:
Código PHP:
foreach($_POST["dia"] as $value)
{
$insertSQL = sprintf("INSERT INTO horario (dia, idarea, idgrupo,idasignatura , docente,hinicio, hfin,aula) VALUES (%s,%s,%s,%s, %s, %s, %s, %s)",
GetSQLValueString($value, "text"),
GetSQLValueString($_POST['combo1'], "text"),
GetSQLValueString($_POST['combo2'], "text"),
GetSQLValueString($_POST['combo3'], "text"),
GetSQLValueString($_POST['combo4'], "text"),
GetSQLValueString($_POST['hinicio'], "text"),
GetSQLValueString($_POST['hfin'], "text"),
GetSQLValueString($_POST['aula'], "text"));
// el resto del código...
}
Saludos!