求教PHP中多维数组中相同的值提取归类

例 PHP中有这么一个多维数组

Array[4][
  {
    "attr_id": "11",
    "attr_price": "29.8",
    "attr_value": "蓝色",
    "goods_attr_id": "31",
    "goods_id": "10"
  },{
    "attr_id": "8",
    "attr_price": "29.8",
    "attr_value": "60CM",
    "goods_attr_id": "29",
    "goods_id": "10"
  },{
    "attr_id": "8",
    "attr_price": "29.8",
    "attr_value": "70CM",
    "goods_attr_id": "30",
    "goods_id": "10"
  },{
    "attr_id": "11",
    "attr_price": "29.8",
    "attr_value": "黑色",
    "goods_attr_id": "28",
    "goods_id": "10"
  }
]

求教要怎么想相同的 “attr_id” 提取到一个新的数组中 如:

$arr = new arrry();
$arr["a"] = [
  {
    "attr_id": "8",
    "attr_price": "29.8",
    "attr_value": "70CM",
    "goods_attr_id": "30",
    "goods_id": "10"
  },{
    "attr_id": "8",
    "attr_price": "29.8",
    "attr_value": "70CM",
    "goods_attr_id": "30",
    "goods_id": "10"
  },
]

$arr["b"] = [
   {
    "attr_id": "11",
    "attr_price": "29.8",
    "attr_value": "蓝色",
    "goods_attr_id": "31",
    "goods_id": "10"
    },{
    "attr_id": "11",
    "attr_price": "29.8",
    "attr_value": "黑色",
    "goods_attr_id": "28",
    "goods_id": "10"
  }
]

数组长度不确定、attr_id值、数量不确定,就是要判断将数组中的attr_id相同的归类放入新的数组中.

阅读 3.3k
1 个回答
$arr = [
    [
        "attr_id": "11",
        "attr_price": "29.8",
        "attr_value": "蓝色",
        "goods_attr_id": "31",
        "goods_id": "10"
    ],
    [
        "attr_id": "8",
        "attr_price": "29.8",
        "attr_value": "60CM",
        "goods_attr_id": "29",
        "goods_id": "10"
    ],
    [
        "attr_id": "8",
        "attr_price": "29.8",
        "attr_value": "70CM",
        "goods_attr_id": "30",
        "goods_id": "10"
    ],
    [
        "attr_id": "11",
        "attr_price": "29.8",
        "attr_value": "黑色",
        "goods_attr_id": "28",
        "goods_id": "10"
    ]
]

$arr1 = [];
foreach ($arr as $k => $v) {
    $arr1[$v[attr_id]][] = $v;
}

// 输出
$arr1 = [
    '8' => [
        [
            "attr_id": "8",
            "attr_price": "29.8",
            "attr_value": "70CM",
            "goods_attr_id": "30",
            "goods_id": "10"
        ],
        [
            "attr_id": "8",
            "attr_price": "29.8",
            "attr_value": "60CM",
            "goods_attr_id": "30",
            "goods_id": "10"
        ],
    ],
    '11' => [
        [
            "attr_id": "11",
            "attr_price": "29.8",
            "attr_value": "蓝色",
            "goods_attr_id": "31",
            "goods_id": "10"
        ],
        [
            "attr_id": "11",
            "attr_price": "29.8",
            "attr_value": "黑色",
            "goods_attr_id": "28",
            "goods_id": "10"
        ],
    ],
]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题