合并具有重复值的数组索引的特定字段

时间:2019-01-16 13:37:05

标签: php arrays json

我正在使用从客户端通过JSON文件提供的CSV数据集。我已经将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",
}

我希望能够遍历我的数组(在{{1}之前)并合并这些对象,但同时将两个json_encode($array)的值保留两者到CSV列表中,因此在这种情况下,理想的输出将是

category

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

1 个答案:

答案 0 :(得分:2)

您可以通过简单的循环来做到这一点(我使用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将成为您的愿望输出。