为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel - 比较数组并在数据不同时更新

Laravel - 比较数组并在数据不同时更新

PHP
互换的青春 2022-01-14 18:01:36
流程如下:我在列表中选择最多 5 名学生,然后单击“生成培训”按钮。然后我在会话中记录所选学生的数组。在下一个屏幕中,我检索此数组并呈现一个列表,其中包含一个名为“Attended”的复选框,您可以在其中选择学生是否参加培训。通过单击“记录培训”按钮,我必须更新参加培训的学生。到现在为止还挺好。问题是,我无法更新包含所有学生的原始数组。例如,如果选择了 5 个学生但只有 3 个参加了培训,我应该更新数据库中这些学生的培训并更新原始数组,将未更改的数据与已更改的数据一起保留。下面的代码显示了我如何尝试升级主阵列(选择所有学生)。代码被注释掉了,包括出现的错误:// dd($ar_student); //ARRAY WITH STUDENTS WHO ENJOYED TRAINING    // dd($all_students);//ARRAY WITH ALL SELECTED STUDENTS (MAY BE FROM 1 TO 5)    foreach($all_students as $item1){//I GO ARRAY TO ALL STUDENTS        foreach($ar_student as $item2){//I GO TO ARRAY THE STUDENTS ATTENDING            // dd($item1->student_id);            if($item1->student_id == $item2->student_id){//IF IDS ARE EQUAL                // dd($item2);                $all_students->fase_id = $item2->fase_id;//UPDATE ARRAY WITH ALL STUDENTS (REALLY I NEED TO UPDATE STUDENT PHASE ONLY). ERROR AT THIS LINE: Attempt to assign property of non-object            }        }    }    $students = $all_students;    //dd($all_students);
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

你可能在该行出现错误,因为你试图在数组上设置属性

$all_students->fase_id = $item2->fase_id;

你应该把它改成

$item1->fase_id = $item2->fase_id;


查看完整回答
反对 回复 2022-01-14
?
largeQ

TA贡献2039条经验 获得超7个赞

您的错误来自尝试设置数组 ($all_students) 的“fase_id”属性而不是“item1”。


//You should be setting

$item1->fase_id = ...

//instead of

$all_students->fase_id =

此外,如果您创建一个关联数组(学生 id 是关键),您只能使用一个循环。如果您的数组 $ar_student 是 [student_id => student] 那么:


foreach($all_students as $item1){

    if( isset($ar_student[$item1->student_id]) ){

        $item1->fase_id = $ar_student[$item1->student_id]->fase_id);

    }

}


查看完整回答
反对 回复 2022-01-14
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

错误的原因是 $all_students->fase_id因为all_students是收集,因此您可以在这里做两件事来修复错误。如果您真的想先保持$all_student更新foreach,$all_students[$key]->fase_id如下所示,


foreach($all_students as $key => $item1){

        foreach($ar_student as $item2){

            if($item1->student_id == $item2->student_id){

                $all_students[$key]->fase_id = $item2->fase_id;

            }

        }

    }

否则使用$item1->fase_id如下所示,


$item1->fase_id = $item2->fase_id;


查看完整回答
反对 回复 2022-01-14
  • 3 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号