TOTOP
20D
V2EX  ›  问与答

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

  •  
  •   TOTOP · Jan 28, 2023 · 1758 views
    This topic created in 1233 days ago, the information mentioned may be changed or developed.

    原数组

    
    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 replies    2023-01-29 01:47:41 +08:00
    sadfQED2
        1
    sadfQED2  
       Jan 28, 2023 via Android
    写个递归函数处理?
    TOTOP
        2
    TOTOP  
    OP
       Jan 28, 2023
    @sadfQED2 有思路不会写[doge]
    admpubcom
        3
    admpubcom  
       Jan 28, 2023 via iPhone   ❤️ 1
    使用一个临时的中间数组来统计,用要统计的值来作为数组的 key ,统计数作为数组的值
    zakokun
        4
    zakokun  
       Jan 28, 2023   ❤️ 1
    循环第一个数组,放到中间数组,中间数组的 key 是值,value 是出现次数。 再循环这个中间数组,生成最终结果
    shengtao
        5
    shengtao  
       Jan 28, 2023   ❤️ 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);
    ```
    mumu
        7
    mumu  
       Jan 29, 2023   ❤️ 1
    先合并数组,array_unique 去重,然后,substr_count
    mumu
        8
    mumu  
       Jan 29, 2023
    忘记说了,去重之前,join 一下,生成 string ,最后在 substr_count 获取 count
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2875 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 08:40 · PVG 16:40 · LAX 01:40 · JFK 04:40
    ♥ Do have faith in what you're doing.