【问题标题】:Merge specific fields of array indexes with duplicate values [duplicate]合并具有重复值的数组索引的特定字段[重复]
【发布时间】:2019-01-16 13:37:04
【问题描述】:

我正在使用我的客户通过CSV 文件提供的JSON 数据集。我已将CSV 处理为JSON 格式。

我有以下结果(为了便于阅读,数据集从 1304 减少到 2)

"1": {
    "title": "Abercarn RFC",
    "address": "High Street, Abercarn, Newport, Gwent",
    "postcode": "NP11 5GQ",
    "category": "Club",
    "website": "http://abercarn.rfc.wales",
},

"2": {
    "title": "Abercarn RFC",
    "address": "High Street, Abercarn, Newport, Gwent",
    "postcode": "NP11 5GQ",
    "category": "Seniors",
    "website": "http://abercarn.rfc.wales",
}

我希望能够遍历我的数组(json_encode($array) 之前的)并合并这些对象,但将categoryboth保留到 CSV 列表中,因此这是理想的输出案例将是

"category": "Club, Seniors"

我很高兴简单地合并所有其他字段,因为它们在整个数据集中始终相同。

【问题讨论】:

    标签: php arrays json


    【解决方案1】:

    你可以用简单的循环来做到这一点(我使用title 来定义元素之间的相似性,但你可以改变它):

    $arr = array(["title" => "Abercarn RFC", "category"=> "Club"], ["title" => "other title", "category"=> "BlaBla"], ["title" => "Abercarn RFC", "category"=> "Seniors"]);
    
    $res = array();
    foreach($arr as $e) {
        if (isset($res[$e["title"]]))
            $res[$e["title"]]["category"] .=   ", " . $e["category"];
        else $res[$e["title"]] = $e;
    }
    

    如果要删除数组键,可以使用array_values

    $res 将是你想要的输出。

    【讨论】:

      猜你喜欢
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      相关资源
      最近更新 更多