For anyone trying to decipher Sea's array structures, this may help:
$Student = array("Sea" => array("ID" => "4580001",
"Division" => "Music",
"Major" => "Saxophone",
"Courses" => array("course1" => array("id" => "A001", "grade" => 4),
"course2" => array("id" => "A002", "grade" => 2.5),
"course3" => array("id" => "A003", "grade" => 3),
"course4" => array("id" => "P001", "grade" => 3))),
"Scott" => array("ID" => "4580002",
"Division" => "Music",
"Major" => "Saxophone",
"CourseID" => array("course1" => array("id" => "A001", "grade" => 3.5),
"course2" => array("id" => "A002", "grade" => 2),
"course3" => array("id" => "A003", "grade" => 3),
"course4" => array("id" => "A004", "grade" => 2))),
"Kenny" => array("ID" => "4580003",
"Division" => "Music",
"Major" => "Saxophone",
"CourseID" => array("course1" => array("id" => "A002", "grade" => 4),
"course2" => array("id" => "A003", "grade" => 4),
"course3" => array("id" => "A004", "grade" => 4),
"course4" => array("id" => "P002", "grade" => 4))));
$Course = array("A001" => array ("CourseName" => "Introduction to Music", "Credit" => "4"),
"A002" => array ("CourseName" => "Introduction to Classical Music", "Credit" => "4"));
This makes it easier, I think, to spot, e.g., the "Courses" and "CourseID" key discrepancy.
As justsomeone pointed out, the rest of the code won't even run.