求大佬一段代码, PHP 如何处理这类数组的去重计数?

2023-01-28 09:39:19 +08:00
 DreamCMS

原数组


Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 
        )

    [1] => Array
        (
            [0] => 2
            [1] => 
        )

    [2] => Array
        (
            [0] => 2
            [1] => 
        )

    [3] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 
        )

    [4] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 
        )

    [5] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 
        )

)

处理后的数组

Array
(
    [0] => Array
        (
            [counts] => 2
            [name] => 1
        )

    [1] => Array
        (
            [counts] => 6
            [name] => 2
        )

    [2] => Array
        (
            [counts] => 2
            [name] => 3
        )

    [3] => Array
        (
            [counts] => 1
            [name] => 4
        )

)
1037 次点击
所在节点    问与答
8 条回复
sadfQED2
2023-01-28 09:47:52 +08:00
写个递归函数处理?
DreamCMS
2023-01-28 09:49:33 +08:00
@sadfQED2 有思路不会写[doge]
admpubcom
2023-01-28 10:05:32 +08:00
使用一个临时的中间数组来统计,用要统计的值来作为数组的 key ,统计数作为数组的值
zakokun
2023-01-28 10:09:17 +08:00
循环第一个数组,放到中间数组,中间数组的 key 是值,value 是出现次数。 再循环这个中间数组,生成最终结果
shengtao
2023-01-28 10:19:43 +08:00
```php
$arr = [];
foreach ($a as $v) {
$arr = array_merge($arr, $v);
}

// 如果需要过滤 null 值的话
$arr = array_filter($arr, function ($item) {
return !is_null($item);
});

$c = array_count_values($arr);

$result = [];
foreach ($c as $key => $value) {
$result[] = [
'name' => $key,
'counts' => $value,
];
}
var_dump($result);
```
phpdever
2023-01-28 10:37:16 +08:00
mumu
2023-01-29 01:46:01 +08:00
先合并数组,array_unique 去重,然后,substr_count
mumu
2023-01-29 01:47:41 +08:00
忘记说了,去重之前,join 一下,生成 string ,最后在 substr_count 获取 count

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/910968

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX