[group array php

问题描述 投票:0回答:1

我有一个如下数组,我需要组type_id

array:11 [▼
  0 => {
    +"product_id": 521
    +"product_name": "Name product 1"
    +"type_id": 1
  }
  1 => {
    +"product_id": 521
    +"product_name": "Name product 1"
    +"type_id": 2
  }
  2 => {
    +"product_id": 521
    +"product_name": "Name product 1"
    +"type_id": 3
  }
  3 => {
    +"product_id": 526
    +"product_name": "Name product 2"
    +"type_id: 1
  }
  4 => {
    +"product_id": 526
    +"product_name": "Name product 2"
    +"type_id": 2
  }
]

我想按如下方式将type_id分组为一个数组:

array:2 [▼
  0 => {
    +"product_id": 521
    +"product_name": "Name product 1"
    +"type_id" : {
        0 => 1
        1 => 2
        2 => 3
    }
  }
  1 => {
    +"product_id": 526
    +"product_name": "Name product 2"
    +"type_id": {
        0 => 1
        1 => 2
    }
  }
]

我尝试过,但是无法将type_id分组。任何帮助,不胜感激!非常感谢!

php arrays laravel multidimensional-array
1个回答
0
投票

将数组更改为collection,以便可以使用groupBymappluckvalues等收集方法>

collect($array)->groupBy('product_id')->map(function($products) {
    $obj = clone $products->first();
    $obj->type_id = $products->pluck('type_id');
    return $obj;
})->values()->all();
© www.soinside.com 2019 - 2024. All rights reserved.