首页 > 解决方案 > 按相同的值php对嵌套数组进行分组

问题描述

我需要从嵌套数组创建新数组,其中最小的一个子数组具有相同的值或重复。

我试图检查一个 foreach 来比较子数组 id,如果它是以前找到的,但似乎不能正常工作。


$finalJobs = array();

       foreach ($CompleteJobs as $index => $jobs) {
            foreach ($jobs['jobs'] as $job) {

                if (!empty($finalJobs)) {
                    foreach ($finalJobs as &$finalJob) {
                        foreach ($finalJob['jobs'] as $Fjob) {
                           if (!empty(array_intersect($Fjob, $job))) {
                             //here is my problem
                            }
                        }
                    }
                } else {
                    $finalJobs[$job['id']] = $job;
                }

            }
        }

jobs这是我的原始数组,如果在子数组中id加倍或重复,我需要。

array:4 [▼
  0 => array:4 [▼
    "id" => 9
    "position" => 3
    "jobs" => array:2 [▼
      0 => array:21 [▼
        "id" => 2
        "name" => "9987C"
        "plan_id" => null
      ]
      1 => array:21 [▼
        "id" => 3
        "name" => "1009V"
        "plan_id" => null
      ]
    ]
  ]
  1 => array:4 [▼
    "id" => 8
    "position" => 2
    "jobs" => array:1 [▼
      0 => array:21 [▼
        "id" => 2
        "name" => "10bb"
        "plan_id" => null
      ]
      1 => array:21 [▼
        "id" => 4
        "name" => "CC09"
        "plan_id" => null
      ]
    ]
  ]
  ...

我预期的数组必须看起来像:

array:4 [▼
   8 => array:4 [▼
     "id" => 8
     "position" => 2
   ]
    "id" => 9
    "position" => 3
    "jobs" => array:3 [▼
      0 => array:21 [▼
        "id" => 2
        "name" => "01"
        "plan_id" => null
      ]
      1 => array:21 [▼
        "id" => 3
        "name" => "09BB"
        "plan_id" => null
      ]
      3 => array:21 [▼
        "id" => 4
        "name" => "10CB"
        "plan_id" => null
      ]
    ]
  ]

我需要有一种联合,我检查是否id找到相同的值并将数组重写为新形式。

标签: phparrayslaravel

解决方案


推荐阅读