A ver, si la variable del foreach() es $classes, ¿por qué se te ocurre comprobar con empty() la variable $_POST['classes'] si no es la misma variable?
Sin ver el resto del código es complicado adivinar como haces dichas asignaciones, pero un ejemplo sencillo debería ser así:
Código PHP:
Ver originalif ( ! empty($_POST['classes']) && is_array($_POST['classes'])) { // foreach ($_POST['classes'] ...)
}
Además deberías verificar que efectivamente tu variable es un array, porque el mensaje de error se refiere a eso: la variable $classes no es un array y de ahí el error.