我有一个如下所示的数组:
Array
(
[0] => Array
(
[name] => test
[...] => ...
)
[1] => Array
(
[name] => wine
[...] => ...
)
[2] => Array
(
[name] => wine
[...] => ...
)
)
现在,我想要实现的是这样的:
Array
(
[0] => Array
(
[name] => test
[occurrence] => 1
[...] => ...
)
[1] => Array
(
[name] => wine
[occurence] => 2
[...] => ...
)
)
简而言之,我想根据唯一的name
密钥对项目进行重复数据删除,并且我想在结果中添加一个计数器occurrence
,告诉我每个项目发生的频率。这些项目有更多的键,应该保留(保持第一次出现的值很好)。
答案 0 :(得分:2)
$result = [];
foreach ($array as $item) {
if (!isset($result[$item['name']])) {
$result[$item['name']] = $item;
$result[$item['name']]['occurrence'] = 1;
} else {
$result[$item['name']]['occurrence']++;
}
}
简单地使用数组键是唯一的这一事实,并且您将在单个循环迭代中对您的数据进行重复数据删除。