0

順番待ちリストのクリアページのために、学期、クラス、学生の3層の配列をまとめようとしています。これが私が配列を作成するために使用しているforeachですが、何かが正しくありません。結果の配列は、ループして用語>コース>学生のhtmlテーブルを作成するのに適していません。私のforeachは次のようになります

    foreach ($active_terms as $term) {
    $waitlists[ $term['term_id'] ] = $term;
        foreach ($active_courses as $course) {
            if ( ($course['term_id'] == $term['term_id']) && ($course['students_waitlisted'] > 0) ) {
            $waitlists[ $term['term_id'] ][ $course['course_id'] ] = $course;                   
                    foreach ($waitlisted_reservations as $reservation) {
                        if ( ($term['term_id'] == $reservation['term_id'])
                                && ($course['course_id'] == $reservation['course_id']) ) {
                            $waitlists[ $term['term_id'] ][ $course['course_id'] ][ $reservation['reservation_id'] ] = $reservation;
                        }   
                    }
            }
        }               
}

結果の配列は近くにありますが、次のようになります。

Array
(
[1] => Array
    (
        [term_id] => 1
        [term_title] => Summer Session 1
        [term_begin_date] => June 25 2012
        [3] => Array
            (
                [term_id] => 1
                [course_id] => 3
                [course_title] => Biology 1
                [course_student_limit] => 8
                [students_reserved] => 6
                [students_registered] => 0
                [students_waitlisted] => 3
                [175] => Array
                    (
                        [term_id] => 1
                        [course_id] => 3
                        [reservation_id] => 175
                        [reservation_grade_level] => 12
                        [student_sis_id] => 289055
                    )
                [173] => Array
                    (
                        [term_id] => 1
                        [course_id] => 3
                        [reservation_id] => 173
                        [reservation_grade_level] => 08
                        [student_sis_id] => 111988
                    )
            )
    )
[2] => Array
    (
        [term_id] => 2
        [application_id] => 2
        [term_title] => Summer Session 2
        [term_begin_date] => July 23 2012
        [18] => Array
            ( ....

親子の巣を正しく作る方法を誰かに教えてもらえますか?または、この配列は正しいので、ネストされたforeachを実行してテーブルを作成する方法をめちゃくちゃにしましたか?

4

1 に答える 1

0

もう1つのレベルを導入する必要があります。たとえば、次を置き換えます。

$waitlists[ $term['term_id'] ][ $course['course_id'] ] = $course;

これとともに:

$waitlists[ $term['term_id'] ]['courses'][ $course['course_id'] ] = $course;

アップデート

foreach正気を保つために、次のような参照を使用することもできます。

foreach ($active_terms as $term) {
$waitlists[ $term['term_id'] ] = $term;
    foreach ($active_courses as $course) {
        if ( ($course['term_id'] == $term['term_id']) && ($course['students_waitlisted'] > 0) ) {
        $waitlists[ $term['term_id'] ][ $course['course_id'] ] = $course;  

次のように書くこともできます:

foreach ($active_terms as $term) {
    $waitlists[ $term['term_id'] ] = $term;
    $current_courses = &$waitlists[ $term['term_id'] ]['courses'];

    foreach ($active_courses as $course) {
        if ( ($course['term_id'] == $term['term_id']) && ($course['students_waitlisted'] > 0) ) {
        $current_courses[ $course['course_id'] ] = $course;  

変数名を短くします。あなたはおそらくそこから残りを解決することができます:)

于 2012-05-18T06:08:01.587 に答える