If you look at the first object dump it shows that there are 3 classes
Period 1 Mathematics
Period 2 Mathematics
Period 3 Math
but when I get into the second foreach loop that is iterating that class_list it is not getting to Period 3 Math, but duplication Period 2 Mathematics.
I am having one of those days where I just can't *see* what could be wrong.
PHP
Last Comment
jrm213jrm213
8/22/2022 - Mon
Ray Paseur
Is there any way we could get this data set in something like XML or JSON so we could build a code sample that contained test data?
<?php // RAY_temp_jrm213jrm213.phperror_reporting(E_ALL);ini_set('display_errors', TRUE);echo '<pre>';// PROBLEM: http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_28293221.html#a39645672$jso = <<<EOD{"id":"1428","name":"hidden","description":"hidden","date_created":"2013-09-10 13:07:05","date_removed":null,"address":"1","licenses":[{"id":"4191","licensing_entity_id":"1428","license_count":"1500","start_date":"2012-08-01 00:00:00","end_date":"2019-07-31 23:59:59","program_id":"58","grade_level_id":"7.00","grade_level":"Course1\/Sixth Grade","book_level":"6","class_list":[{"id":"3107","teacher_id":"2505","class_name":"period 1 mathematics","last_modified":"","licenses":[],"internal_school_id":"25","students":[]},{"id":"3108","teacher_id":"2505","class_name":"period 2 mathematics","last_modified":"","licenses":[],"internal_school_id":"29","students":[]},{"id":"3109","teacher_id":"2506","class_name":"period 3 math","last_modified":"","licenses":[],"internal_school_id":"9FFVA","students":[]}],"student_list":[]}],"teachers":[],"users":[],"students":[],"access_code":null,"tickets":[],"management_version":0,"default_program":"58","classes":[],"contact_name":"<hidden>","contact_email":"<hidden>","student_list":[]}EOD;// MAKE AN OBJECT$obj = json_decode($jso);// ITERATE OVER THE LICENSESforeach ($obj->licenses as $lic){ // SHOW DATA FROM THE LICENSES $gl = $lic->grade_level; echo PHP_EOL . $gl; // ITERAATE OVER THE CLASS LISTS foreach ($lic->class_list as $cl) { // SHOW DATA FROM THE CLASS LISTS $tid = $cl->teacher_id; $cnm = $cl->class_name; echo PHP_EOL . "$tid $cnm"; }}echo PHP_EOL;// ACTIVATE THIS TO SEE THE ENTIRE OBJECT// var_dump($obj);
That is really bizarre that it works as expected for you and differently for me.
Actually what I need to do is have the a further loop around that like this
foreach($class_assignments as $assignment){ foreach($entity->licenses as &$license2){ foreach($license2->class_list as $class){ if($class->get_internal_school_id() == $assignment->school_class_id){ array_push($license2->student_list,$assignment); } } }}
Basically I am dealing with a large file upload that specifies an updated class roster list. But before inserting those roster assignments into the database I need to make sure the new roster list will not violate their licensing seats.
But what was happening is I was getting double the student assignments because that class "Period 2 Mathematics" ends up in the class list twice somehow once you get inside that last loop... anytime before it if I print_r it, it is correct.
I only added the $keys in later because I wanted to see it was hitting all the indexes, which it is, but the last one "Period 3 Math" isn't in the array anymore, and "Period 2 Mathematics" is in the array twice.