如何计算和减少数组中值的出现?

时间:2015-12-04 10:24:37

标签: php arrays

我有一个如下所示的数组:

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,告诉我每个项目发生的频率。这些项目有更多的键,应该保留(保持第一次出现的值很好)。

1 个答案:

答案 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']++;
    }
}

简单地使用数组键是唯一的这一事实,并且您将在单个循环迭代中对您的数据进行重复数据删除。