合并二维数组,并计算重复字段的平均值

 1 <?php
 2 $arrs = Array (
 3     Array ( ‘rname‘ => ‘小麦‘, ‘m1‘=> 12.00 ,‘m2‘=> 33,‘qq‘=> 33  ) ,
 4     Array ( ‘rname‘ => ‘小麦‘, ‘m1‘ => 23.00,‘m2‘=> 44,‘qq‘=> 11 ) ,
 5     Array ( ‘rname‘ => ‘ccc‘, ‘m1‘ => 11,‘m2‘=> 22,‘qq‘=> 12 )
 6 );
 7
 8 //计算出重复字段出现的次数
 9 $b=array();
10 foreach($arrs as $v){
11     $b[]=$v[‘rname‘];
12 }
13 $c=array_unique($b);
14 foreach($c as $v){
15     $n=0;
16     foreach($arrs as $t){
17         if($v==$t[‘rname‘])
18             $n++;
19     }
20     $d[][‘nn‘]=$n;
21
22 }
23
24 //合并数组中重复的值,并进行加计算
25 $tmpval=array();
26 $data=array();
27 $i=0;
28 //遍历原数据
29 foreach($arrs as $key=>$arr){
30
31     if(!empty($tmpval) && array_key_exists($arr[‘rname‘],$tmpval)){
32         //存在
33         $key=$tmpval[$arr[‘rname‘]];
34
35         $data[$key][‘m1‘]+=$arr[‘m1‘];
36
37         $data[$key][‘m2‘]+=$arr[‘m2‘];
38     }else{
39         //不存在
40         $tmpval[$arr[‘rname‘]]=$i;
41         $data[$i++]=$arr;
42     }
43 }
44
45 //把2个二维数组合并成一个二维数组
46 $zuizhong = array();
47 foreach($data as $k=>$r){
48     $zuizhong[] = array_merge($r,$d[$k]);
49 }
50
51 //计算出平均值
52 $datas = array();
53 foreach($zuizhong as $key=>$arr){
54     $datas[$key][‘rname‘] = $arr[‘rname‘];
55     $datas[$key][‘m1‘] = $arr[‘m1‘]/$arr[‘nn‘];
56     $datas[$key][‘m2‘] = $arr[‘m2‘]/$arr[‘nn‘];
57 }
58
59 echo "<pre>";
60 print_r($d);
61 print_r($data);
62 print_r($zuizhong);
63 print_r($datas); 

http://www.cnblogs.com/losesea/archive/2013/06/14/3134900.html

时间: 2024-11-09 00:45:31

合并二维数组,并计算重复字段的平均值的相关文章

PHP二维数组如何根据某个字段排序

分享下PHP二维数组如何根据某个字段排序的方法. 从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条. 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求. 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条. 这个要求就不是 ORDER BY 能解决的问题了.因此翻看 PHP手册查找到了如下方法,做此笔记.

二维数组按照指定的字段排序的函数

/** * 二维数组根据字段进行排序 * @params array $array 需要排序的数组 * @params string $field 排序的字段 * @params string $sort 排序顺序标志 SORT_DESC 降序:SORT_ASC 升序 */ function arraySequence($array, $field, $sort = 'SORT_DESC') { $arrSort = array(); foreach ($array as $uniqid =>

从二维数组中计算某个字符串的出现频率

<?php $array=array( array("name","word","hello","haha"), array("user","push","array","pop"), array("code","course","content","public"

取出两个二维数组中不重复的数组值方法

1 var arr1=[ 2 [1,2,3,4,5], 3 [1,2,3,4,5], 4 [12,3,4], 5 [6,7,8], 6 [32,2] 7 ]; 8 var arr2=[ 9 [1,2,3,4,5], 10 [6,7,8], 11 [6,7,8], 12 [15,16] 13 ]; 14 console.log(fillterArr(arr1,arr2));// ["12,3,4"] ["15,16"] ["32,2"] 方法: 1

对二维数组的某一字段求和

方法一: array_sum(array_map(create_function('$val', 'return $val["size"];'), $arr)); 方法二: array_sum(array_map(function($val){return $val['size'];}, $arr)); 对于windows系统,这两种方法均可用. 对于Linux系统,只有方法一可用,如果是方法二的话,会报错:Fatal error: Invalid opcode 153/1/8. in

先这样吧,感觉二维数组的计算比一维要费脑点,那三维,四维就更不必说了。。。。

import java.io.*; import java.util.*; public class ArraySort { public static void main(String[] args) { StringBuilder sb= new StringBuilder(); List<String> listStr = new ArrayList<String>(); String[] sourceWord = {"this", "fat&q

PHP 合并两个二维数组 array_map 和 array_walk 的区别

  array_map array_walk 函数介绍 为数组的每个元素应用回调函数 使用用户自定义函数对数组中的每个元素做回调处理 版本限制 (PHP 4 >= 4.0.6, PHP 5, PHP 7) (PHP 4, PHP 5, PHP 7) 使用说明 array_map ( callable callback,arrayarr1 [, array $- ] ) array_walk ( array &array,callablefuncname [, mixed $userdata

二维数组针对某字段排序 - array_multisort()

/** * 针对二维数组下的某字段排序 * @param array $myarr 被排序数组 * @param string $sort_key 排序根据字段 * @param flag $sort_order 排序规则:SORT_ASC.SORT_DESC * @param flag $sort_type 排序类型:SORT_REGULAR.SORT_NUMERIC.SORT_STRING * @return array 排序后的数组 */ public function myarr_sor

PHP中根据二维数组中某个字段实现排序

想要实现二维数组中根据某个字段排序,一般可以通过数组循环对比的方式实现.这里介绍一种更简单的方法,直接通过PHP函数实现.array_multisort() :可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序.详细介绍可参考PHP手册:https://www.php.net/manual/zh/function.array-multisort.php 实例: 1.单个字段排序: $data = [ ['id' => 1, 'name' => '张三', 'sort' =&