Now I'm having a problem with foreach. I have my local array $school of type School. Type School contains an array of accompanists. I'm trying to print off some school information, with accompanist information printed off in an inner loop. PHP is giving me the error:
Warning: Invalid argument supplied for foreach() in /home/festival/webspace/html/schedulefestival.php on line 92 Line 92 is the beginning of the inner loop. Here's the inner and outer loops: foreach ($school as $field) { print "School Name: ".$field->schoolname."<br>\n"; print "School Time Request: ".$field->begTimeReq." - ".$field->endTimeReq."<br>\n"; foreach ($school->accompanist as $field) { print "Accompanist Name: ".$field->accname."<br>\n"; print "Solo Count: ".$field->soloCount."<br>\n"; print "Ensemble Count: ".$field->ensembleCount."<br>\n"; print "Choir Count: ".$field->choirCount."<br>\n"; print "Show Choir Count: ".$field->showChoirCount."<br><br>\n"; } print "<br><br><br><br>\n"; } And here's the full code: <? //Now for some database stuff. $db = "NEO_Music_Festival"; $user = "festival"; $pass = "466573746976616C"; //Let's connect $link = mysql_connect ("localhost", $user, $pass); if (!$link) die ("Could not connect to database server."); mysql_select_db ($db, $link) or die ("Could not connect to database"); class School { var $directorid; var $beginTimeReq; var $endTimeReq; var $schoolname; var $schoolid; var $accompanist = Array(); } class Accompanist { var $directorid; var $accid; var $accname; var $soloCount; var $ensembleCount; var $choirCount; var $showChoirCount; } class Room { var $roomNumber; var $entryTypeAccepted; //Solo-ensemble, choir, or show choir var $time = Array(); //Array of times } //Time to get started. $schoolCount = 0; $school = array(); $query = "SELECT director_id, school_id, school_name, choir_beg_time_req, choir_end_time_req FROM School ORDER BY school_id;"; $schoolresult = mysql_query($query, $link) or die ("Could not access database: ".mysql_error()); while ($school_row = mysql_fetch_array($schoolresult, MYSQL_ASSOC)) { $school[$schoolCount] = new School(); $school[$schoolCount]->directorid = $school_row['director_id']; $school[$schoolCount]->begTimeReq = $school_row['choir_beg_time_req']; $school[$schoolCount]->endTimeReq = $school_row['choir_end_time_req']; $school[$schoolCount]->schoolname = $school_row['school_name']; $school[$schoolCount]->schoolid = $school_row['school_id']; $accCount = 0; $query = "SELECT acc_id, accompanist_name from Accompanist where director_id='".$school[$schoolCount]->directorid."';"; $accresult = mysql_query($query, $link) or die ("Could not access database: ".mysql_error()); while ($acc_row = mysql_fetch_array($accresult, MYSQL_ASSOC)) { $school[$schoolCount]->accompanist[$accCount] = new Accompanist(); $school[$schoolCount]->accompanist[$accCount]->directorid = $school[$schoolCount]->directorid; $school[$schoolCount]->accompanist[$accCount]->accname = $acc_row['accompanist_name']; $school[$schooCount]->accompanist[$accCount]->accid = $acc_row['acc_id']; $query = "SELECT * FROM Entry WHERE acc_id='".$accompanist[$accCount]."' AND entry_type='Solo';"; $soloresult = mysql_query($query, $link) or die("Could not access database: ".mysql_error()); $school[schoolCount]->ccompanist[$accCount]->soloCount = mysql_num_rows($soloresult); $query = "SELECT * FROM Entry WHERE acc_id='".$accompanist[$accCount]."' AND entry_type='Ensemble';"; $ensembleresult = mysql_query($query, $link) or die("Could not access database: ".mysql_error()); $school[schoolCount]->accompanist[$accCount]->ensembleCount = mysql_num_rows($ensembleresult); $query = "SELECT * FROM Entry WHERE acc_id='".$accompanist[$accCount]."' AND entry_type='Choir';"; $choirresult = mysql_query($query, $link) or die("Could not access database: ".mysql_error()); $school[$schoolCount]->accompanist[$accCount]->choirCount = mysql_num_rows($choirresult); $query = "SELECT * FROM Entry WHERE acc_id='".$accompanist[$accCount]."' AND entry_type='Show Choir';"; $scresult = mysql_query($query, $link) or die("Could not access database: ".mysql_error()); $school[schoolCount]->accompanist[$accCount]->showChoirCount = mysql_num_rows($scresult); $accCount++; } $schoolCount++; } foreach ($school as $field) { print "School Name: ".$field->schoolname."<br>\n"; print "School Time Request: ".$field->begTimeReq." - ".$field->endTimeReq."<br>\n"; foreach ($school->accompanist as $field) { print "Accompanist Name: ".$field->accname."<br>\n"; print "Solo Count: ".$field->soloCount."<br>\n"; print "Ensemble Count: ".$field->ensembleCount."<br>\n"; print "Choir Count: ".$field->choirCount."<br>\n"; print "Show Choir Count: ".$field->showChoirCount."<br><br>\n"; } print "<br><br><br><br>\n"; } ?> What's wrong with my loop? The Accompanist objects in the School->accompanist array have all been initialized and assigned values (I think)...