Heim  >  Fragen und Antworten  >  Hauptteil

Laravel – Erstellen Sie Objekt-Arrays und Arrays in PHP

Ich versuche, ein Array von Objekten in Laravel PHP zu erstellen. Bisher ist mir das gelungen.

Wenn ich das Array zurücksende, erhalte ich die Antwort. Aus Gründen der Übersichtlichkeit habe ich das Bild hinzugefügt.

Ich bekomme diese Ausgabe

Ich möchte eine Antwort wie diese erstellen...

[
    {
        "student": "Jaime Thomas",
        "subjects": [
            {
                "subject": "Physics",
                "marks_": 0
            },
            {
                "subject": "Chemistry",
                "marks_": 0
            }
        ]
    },
    {
        "student": "Jaime Dey",
        "subjects": [
            {
                "subject": "Physics",
                "marks_": 0
            },
            {
                "subject": "Chemistry",
                "marks_": 0
            }
        ]
    }
]
$usersData = User::where('user_id', 2)->where("stud_class", $exam_details->exam_class_id)->where("XXXX", $exam_details->exam_branch_id)->get();
            foreach ($exam_data as  $subject) {
                $att_exams =  MODEL::where('XXXXX', $subject->subject_id)
                    ->where('XXXX', $user->id)
                    ->first();
                if ($att_exams) {
                    $marks =  MODEL::where('XXXX', $att_exams->attended_exams_id)->get();
                    $right = 0;
                    $wrong = 0;
                    $total_marks = $marks->sum('XXXX');
                    
                    $total_negative_marks = $wrong * $subject->negative_marks;
                    $subjectsArray[] = array(
                        "subject" => $subject->subject_name,
                        "marks_" => $total_marks - $total_negative_marks,
                    );
                } else {
                    $subjectsArray[] = array(
                        "subject" => $subject->subject_name,
                        "marks_" => 0,
                    );
                }
            }
            $studentsArray["subjects"] = array($subjectsArray);
        }
        return $studentsArray;

P粉298305266P粉298305266226 Tage vor439

Antworte allen(1)Ich werde antworten

  • P粉921130067

    P粉9211300672024-03-31 12:35:23

    您可以尝试以下代码:

    $studentsArray = [];
            $usersData = User::where('user_id', 2)->where("stud_class", $exam_details->exam_class_id)->where("XXXX", $exam_details->exam_branch_id)->get(['name', 'id']);
            foreach ($usersData as $user) {
                $subjectsArray = [];
                foreach ($exam_data as  $subject) {
                    $att_exams =  MODEL::where('XXXXX', $subject->subject_id)
                        ->where('XXXX', $user->id)
                        ->first();
                    if ($att_exams) {
                        $marks =  MODEL::where('XXXX', $att_exams->attended_exams_id)->get();
                        $right = 0;
                        $wrong = 0;
                        $total_marks = $marks->sum('XXXX');
                        foreach ($marks as $mark) {
                            if ($mark->XXX== 0) {
                                $wrong++;
                            } else {
                                $right++;
                            }
                        }
                        $total_negative_marks = $wrong * $subject->negative_marks;
                        $subjectsArray[] = [
                            "subject" => $subject->subject_name,
                            "marks_" => $total_marks - $total_negative_marks,
                        ];
                    } else {
                        $subjectsArray[] = array(
                            "subject" => $subject->subject_name,
                            "marks_" => 0,
                        );
                    }
                }
                $studentsArray[] = [
                    "student" => $user->name,
                    "subjects" => $subjectsArray
                ];
            }
            return $studentsArray;

    Antwort
    0
  • StornierenAntwort