【问题标题】:How to get all the arrays of the same value into a new array如何将所有相同值的数组放入一个新数组中
【发布时间】:2022-01-26 12:58:38
【问题描述】:

我有下面的数组

[0: {id: 2, restult_typeid: 1, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}
1: {id: 2, restult_typeid: 2, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}
2: {id: 2, restult_typeid: 3, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}
3: {id: 2, restult_typeid: 4, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}
4: {id: 2, restult_typeid: 1, studentid: 3, academic_periodid: 1, subjectid: 1, classroomid: 6,…}]

我想把这个数组变成这个,即所有具有相同subjectid的数组都应该在一个组中,反之亦然

[
0: [{id: 2, restult_typeid: 1, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}, {id: 2, restult_typeid: 2, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}, {id: 2, restult_typeid: 3, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}, {id: 2, restult_typeid: 4, studentid: 3, academic_periodid: 1, subjectid: 2, classroomid: 6,…}]
1: [{id: 2, restult_typeid: 1, studentid: 3, academic_periodid: 1, subjectid: 1, classroomid: 6,…}]
]

我试过了

$allSubjects = [];
        $subs = [];
        foreach($result as $res){
            // solve for everysubjectid
            $subject = array_push($allSubjects, $res->subjectid);
            $returnValue = array_unique($allSubjects);

                $getScores = array_push($subs, [$res->subjectid=>[
                        'type'=>$res->restult_typeid,
                        'subjecttitle'=>$res->subjecttitle,
                        'score'=>$res->score_obtained,
                ]]);


        }

【问题讨论】:

  • 你想要数组中的唯一元素吗?

标签: php laravel


【解决方案1】:

你可以这样做

$data = [...] //your array
  
$grouped = array_values(
array_reduce($data, function(array $res, $item){
 $subject = $data['subjectid'];
  $existing = $res[$subject] ?? [];
  $res[$subject] = array_merge($existing, [$item]);
  return $res;
}, []));

【讨论】:

    【解决方案2】:

    您可以简单地尝试按subjectid分组

    $subs = [];
    foreach($result as $res){
        $subs[$res->subjectid][] = $res;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多