我需要过滤掉我的二维数组中的重复行,并在保留的唯一行中附加一个元素,该元素包含原始数组中唯一行存在的次数。
我想使用array_unique($array, SORT_REGULAR)
,但是删除重复项是不够的--我实际上需要存储每个唯一行的重复行的计数。
我尝试了array_search()
和循环,但没有一次得到正确的结果。我的项目数据有超过500,000个条目,但这里有一个基本的例子:
输入:
[
['manufacturer' => 'KInd', 'brand' => 'ABC', 'used' => 'true'],
['manufacturer' => 'KInd', 'brand' => 'ABC', 'used' => 'true'],
['manufacturer' => 'KInd', 'brand' => 'ABC', 'used' => 'false'],
]
输出:
[
['manufacturer' => 'KInd', 'brand' => 'ABC', 'used' => 'true', 'count' => 2],
['manufacturer' => 'KInd', 'brand' => 'ABC', 'used' => 'false', 'count' => 1],
]
2条答案
按热度按时间dtcbnfnu1#
您不需要使用任何复杂的序列化或编码来创建组合键以进行分组。只需将每行的值内爆(假设它们都包含相同顺序的相同列)以创建结果数组的标识键。
在第一次遇到时,将行的数据存储在组中,并将组的计数设置为1;在任何后续遭遇中,增加该组的计数器。
代码:(Demo)
输出:
其他利用多个标识列值进行分组的帖子:
u5rb5r592#
如果我没理解错的话,这个应该会有帮助