首页 > 其他分享 >二维数组根据某个字段去重并统计个数

二维数组根据某个字段去重并统计个数

时间:2024-09-05 18:24:41浏览次数:4  
标签:specId filteredArray 个数 二维 item 字段 array data name

    public function census() {
        
        $data = $this->request->post("params/a");
        
        // $data = [
        //     ['name' => 'Alice', 'specId' => 25],
        //     ['name' => 'Bob', 'specId' => 25],
        //     ['name' => 'Charlie', 'specId' => 26],
        //     ['name' => 'Alice', 'specId' => 26],
        //     ['name' => 'Bob', 'specId' => 26],
        // ];

        // 按字段分组
        $grouped = array_reduce($data, function ($carry, $item) {
            $carry[$item['specId']][] = $item;
            return $carry;
        }, []);
         
        // 计算每个分组的数量
        $groupCounts = array_map(function ($group) {
            return count($group);
        }, $grouped);

        // print_r($groupCounts);
                
        // 使用array_column()获取特定字段,然后用array_unique()获取唯一值
        $uniqueItems = array_values(array_unique(array_column($data, 'specId'), SORT_REGULAR));
         
        // 使用array_filter()重新组装数组
        $filteredArray = array_filter($data, function ($item) use ($uniqueItems) {
            static $found = [];
            if (in_array($item['specId'], $found)) {
                return false; // 如果已经找到,不包含在结果中
            } else {
                $found[] = $item['specId']; // 标记为找到
                return true;
            }
        });
         
        // print_r($filteredArray);exit();

        foreach($filteredArray as $key => $val) {
            if(isset($groupCounts[$val['specId']])) {
                $filteredArray[$key]['num'] = $groupCounts[$val['specId']];
            }
        }

        $this->success('',$filteredArray);
        
    }

 

 

标签:specId,filteredArray,个数,二维,item,字段,array,data,name
From: https://www.cnblogs.com/cx1992/p/18399014

相关文章

  • 草料二维码功能上新!可以跨分区移动或复制内容了!
    支持将分区下的内容移动或复制到其他分区。适用于将原初始分区下的内容按业务划分,移动到其他分区。或者当物品流转或业务变更时,可以及时将码及数据移动到对应分区,移动后,二维码图案不会发生变化。目前仅表单、活码、批量模板、状态可跨分区移动/复制。只有账号下存在多分区时,弹窗......
  • 本地机Spool出某个表的字段名和数据到csv
    之前是通过sqlcl提供的SETSQLFORMATcsv导出数据到csv文件,这次是想尝试仅仅是使用SQLplus中的spool导出数据数据准备SQL>SELECT*FROMEMPORDERBYEMPNO;EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO_________________________......
  • MySQL优化-explain:字段,索引相同的多个数据库为什么他们的type,key,key_len会不一样
    实习倒数第二天,偶然间查了查自己的写的sql语句性能有没有问题。selectCOL1,COL2,COL3frominf_logwhereCODE='AAA'andORDER_ID='123456';上述字段中,code与order_id都被设置为索引IDX_MIAN_ID,IDX_CODE。也就是说,正常情况下这两个索引应该是都会命中公司实现了表的水平......
  • 使用vue-json-pretty和vue-json-schema-editor-visual封装一个可视化json数据编辑器及
    一、前言        最近做了一个需求,要求实现可以对json结构进行编辑保存及字段级别的权限管控,结合目前已有的轮子和当前项目的结构,决定使用vue-json-pretty和vue-json-schema-editor-visual来实现效果如下组件支持修改左侧json数据,自动生成右侧树。也支持修改右侧树......
  • 发送到PO/PI后查看报文发现会在末尾多给一个空格,后来发现基本上是数字、金额等字段,这
    PO报文发出去数字,金额等字段统统后面都会带有空格但是在abapdebugger看值看不出字段后面有空格<CGHTMXLIST><CGWXMC/><ZJTBM/><XQSL>1.000</XQSL><MEINS>XIA</MEINS><XQGJ>20000000.00</XQGJ><JHAMOUNT>20000000.00</JHAMOUNT><......
  • android 二维码扫描的逻辑
    用的是ZXing库依赖有//二维码依赖(ZXing库)implementation'com.journeyapps:zxing-android-embedded:4.3.0'implementation'androidx.appcompat:appcompat:1.4.2' 1.建立一个二维码扫描的工具类(QrCodeScanner)里面的逻辑有可以根据不同的标识符处理不同的扫描......
  • 深入理解JavaScript类与对象:揭秘类字段和静态属性的妙用,js静态属性和实例属性
    在深入理解JaScript类与对象的过程中,类字段和静态属性是两个关键的概念,掌握它们的用法可以让你在实际开发中更加得心应手。虽然JaScript在ES6之前并没有类的概念,但通过ES6及以后的版本,引入了类语法糖,使得我们能够更直观地定义和使用类。类字段是指在类中直接定义的属性,而不是在构......
  • 初次部分使用c++语言无意发现个数组元素查找的代码
    includeusingnamespacestd;//定义结构体structMyArray{intarr[100];//数组,假设最大长度为100intsize;//数组当前元素数量};//输入函数,修改数组内容voidscanf(MyArray&myArray){for(inti=0;i<myArray.size;i++){cin>>myArray.arr[i];//键盘......
  • mysql实用系列:字段类型转换该怎么去转
    在MySQL中,可以使用内置的函数来转换字段类型。以下是一些常用的类型转换函数:CAST(expressionAStype):用于将一个表达式转换为指定的数据类型。CONVERT(expression,type):与CAST类似,但语法略有不同以下是一些具体类型的转换示例:将字符串转换为整数:CAST(column_nameAS......
  • 代码随想录算法训练营|Day06 LeetCode 242.有效的字母异位词,349.两个数组的交集,202.快
    理论知识哈希表是根据关键码的值而直接进行访问的数据结构,一般用来快速判断一个元素是否出现在集合里映射——哈希函数哈希碰撞线性探测法拉链法常用的哈希结构数组set(集合)map(映射)242.有效的字母异位词242.有效的字母异位词-力扣(LeetCode)classSolution{......