V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DreamCMS
V2EX  ›  问与答

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

  •  
  •   DreamCMS · 2023-01-28 09:39:19 +08:00 · 1026 次点击
    这是一个创建于 651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原数组

    
    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
            )
    
    )
    
    8 条回复    2023-01-29 01:47:41 +08:00
    sadfQED2
        1
    sadfQED2  
       2023-01-28 09:47:52 +08:00 via Android
    写个递归函数处理?
    DreamCMS
        2
    DreamCMS  
    OP
       2023-01-28 09:49:33 +08:00
    @sadfQED2 有思路不会写[doge]
    admpubcom
        3
    admpubcom  
       2023-01-28 10:05:32 +08:00 via iPhone   ❤️ 1
    使用一个临时的中间数组来统计,用要统计的值来作为数组的 key ,统计数作为数组的值
    zakokun
        4
    zakokun  
       2023-01-28 10:09:17 +08:00   ❤️ 1
    循环第一个数组,放到中间数组,中间数组的 key 是值,value 是出现次数。 再循环这个中间数组,生成最终结果
    shengtao
        5
    shengtao  
       2023-01-28 10:19:43 +08:00   ❤️ 1
    ```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
        6
    phpdever  
       2023-01-28 10:37:16 +08:00   ❤️ 1
    mumu
        7
    mumu  
       2023-01-29 01:46:01 +08:00   ❤️ 1
    先合并数组,array_unique 去重,然后,substr_count
    mumu
        8
    mumu  
       2023-01-29 01:47:41 +08:00
    忘记说了,去重之前,join 一下,生成 string ,最后在 substr_count 获取 count
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1140 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:47 · PVG 07:47 · LAX 15:47 · JFK 18:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.