如何通过PHP中的多个键对数组进行分组

开发网

我在PHP中有一个数组,如下所示:

$data = array
  (
  array("Ticket_id" => "239248",
        "Order_Level_Issue" => "Database update",
        "Geo" => "EMEA",
        "Line_No" => "10",
        "Line_Level_Issue" => "Qty verification"),
  array("Ticket_id" => "239248",
        "Order_Level_Issue" => "Database update",
        "Geo" => "EMEA",
        "Line_No" => "20",
        "Line_Level_Issue" => "Payment verification"),
  array("Ticket_id" => "239249",
        "Order_Level_Issue" => "Shipping company",
        "Geo" => "EMEA",
        "Line_No" => "20",
        "Line_Level_Issue" => "Missing address")

  );

我想通过多个键将子数组分组来格式化$ data数组。结果应该如下:

$dataGrouped = array
  (
  array("Ticket_id" => "239248",
        "Order_Level_Issue" => "Database update",
        "Geo" => "EMEA",
        "Lines" => ( 
        array(
        "Line_No" => "10",
        "Line_Level_Issue" => "Qty verification"),
        array(
        "Line_No" => "20",
        "Line_Level_Issue" => "Payment verification") ) ),

  array("Ticket_id" => "239249",
        "Order_Level_Issue" => "Shipping company",
        "Geo" => "EMEA",
        "Lines" => ( 
        array(
        "Line_No" => "20",
        "Line_Level_Issue" => "Missing address") ) )

  );

因此,我将按Ticket_id,Order_Level_Issue,Geo进行分组,然后创建一个子数组Lines,在其中存储所有行。最后,echo json_encode($dataGrouped);我会得到这种格式

"data": [
      {
            "Ticket_id": "239248",
            "Order_Level_Issue": "Database update",
            "Geo": "EMEA",
            "Items": [
            {"Line_No": "10",
            "Line_Level_Issue": "Qty verification"},
            {"Line_No": "20",
            "Line_Level_Issue": "Payment verification"} ]
        },

        {
            "Ticket_id": "239249",
            "Order_Level_Issue": "Shipping company",
            "Geo": "EMEA",
            "Items": [
            {"Line_No": "20",
            "Line_Level_Issue": "Missing address"} ]
        } ]

我所做的是,创建了一个组合钥匙。我将Ticket_id,Order_Level_Issue和Geo串联起来,对于每个键,我都尝试将其余的键分组到单独的数组中。但是我没有得到想要的结果。这是我的代码。有什么建议请我缺少什么?谢谢。

$dataGrouped = [];

foreach($data as $data_key => $d) {

$group_key = $d['Ticket_id'].'_'.$d['Order_Level_Issue'].'_'.$d['Geo'];

if(!isset($dataGrouped[$data_key]))
$dataGrouped[$data_key] = [];
$dataGrouped[$group_key][$data_key] = $d; }

echo json_encode($dataGrouped);
阿尔贝托·莫罗(Alberto Moro)

我写这段代码:

foreach ($data as $d) {
    $group_key = $d['Ticket_id'].'_'.$d['Order_Level_Issue'].'_'.$d['Geo'];
    if (!isset($dataGrouped[$group_key])) {
        $dataGrouped[$group_key] = $d;
        unset($dataGrouped[$group_key]["Line_No"]);
        unset($dataGrouped[$group_key]["Line_Level_Issue"]);
    }
    $dataGrouped[$group_key]['Items'][] = array(
        "Line_No" => $d['Line_No'],
        "Line_Level_Issue" => $d['Line_Level_Issue']
    );
}
echo json_encode(array_values($dataGrouped));

如果密钥不存在,请插入array_push我用重置数组array_values

这段代码Line_No可能很混乱,请考虑使用ksort

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过第一个元素对象键对数组中的数组进行分组

通过嵌套键对数组进行分组

如何通过JavaScript中的对象键之一对数组进行分组

如何基于Javascript / Jquery中的多个键对数组项进行分组

如何在javascript中基于多个键对数组进行分组和转换?

如何通过使用数组值对数组进行分组,PHP

如何根据PHP中的内部数组键对数组进行分组?

如何通过多个键对JSON数组数据进行分组

通过多个键对数组进行分组并更改键名 JavaScript

我将如何在 php 中对数组进行分组

在php中对数组元素进行分组

如何动态地(通过使用通配符)对数组文字中的多个制表符范围进行分组?

如何对数组中的项目进行分组?

如何对数组中的对象进行分组

如何通过匹配内部数组中的值来对数组列表中的数组进行分组?

通过scala中的多个键进行分组

希望通过子数组中的值对数组进行分组

根据Lua中的键对数组值进行分组?

PHP-通过arrays键对数组数组进行排序

通过匹配关键 php 中的字符串对数组中的项目进行分组

如何通过Javascript中的唯一属性对数组中的对象进行分组?

如何对数组条目进行分组和合并,并对多个常见(但不是全部)键的值求和?

如何在PHP中对数组中返回的项目进行分组

通过值对数组进行分组

根据PHP中的相似值对数组进行分组

使用 php 对数组中的元素进行分组

在php中对数组进行分组并计算数据

如何在重复一些数据的php数组中对数据进行排序和分组?

如何在 PHP Laravel Builder 查询中按键对数组进行分组