求合并数组的高效方法
时间:2011-08-30
来源:互联网
//原始的数组如下: $test=array( 'titan'=>array(0=>array('date'=>'2011-08-11','DAU'=>'222','DNU'=>'111','DNUF'=>'444'), 1=>array('date'=>'2011-08-12','DAU'=>'333','DNU'=>'222','DNUF'=>'333'), 2=>array('date'=>'2011-08-13','DAU'=>'444','DNU'=>'333','DNUF'=>'555')), 'apollo'=>array(0=>array('date'=>'2011-08-11','DAU'=>'298','DNU'=>'290','DNUF'=>'900'), 1=>array('date'=>'2011-08-12','DAU'=>'340','DNU'=>'490','DNUF'=>'599'), 2=>array('date'=>'2011-08-13','DAU'=>'234','DNU'=>'345','DNUF'=>'532')), 'bossvegas'=>array(0=>array('date'=>'2011-08-11','DAU'=>'343','DNU'=>'532','DNUF'=>'342'), 1=>array('date'=>'2011-08-12','DAU'=>'323','DNU'=>'234','DNUF'=>'521'), 2=>array('date'=>'2011-08-13','DAU'=>'342','DNU'=>'342','DNUF'=>'523')), 'fishbowl'=>array(0=>array('date'=>'2011-08-11','DAU'=>'342','DNU'=>'523','DNUF'=>'522'), 1=>array('date'=>'2011-08-12','DAU'=>'333','DNU'=>'324','DNUF'=>'555'), 2=>array('date'=>'2011-08-13','DAU'=>'943','DNU'=>'533','DNUF'=>'666')), ); //需要合并成如下的形式: $resultArray=array( 0=>array(0=>array('date'=>'2011-08-11','DAU-titan'=>'222','DAU-apollo'=>'298','DAU-bossvegas'=>'','DAU-fishbowl'=>''), 1=>array('date'=>'2011-08-12','DAU-titan'=>'','DAU-apollo'=>'','DAU-bossvegas'=>'','DNU-fishbowl'=>''), 2=>array('date'=>'2011-08-13','DAU-titan'=>'','DAU-apollo'=>'','DAU-bossvegas'=>'','DAU-fishbowl'=>'')), 1=>array(0=>array('date'=>'2011-08-11','DNU-titan'=>'111','DNU-apollo'=>'290','DNU-bossvegas'=>'','DNU-fishbowl'=>''), 1=>array('date'=>'2011-08-12','DNU-titan'=>'','DNU-apollo'=>'','DNU-bossvegas'=>'','DNU-fishbowl'=>''), 2=>array('date'=>'2011-08-13','DNU-titan'=>'','DNU-apollo'=>'','DNU-bossvegas'=>'','DNU-fishbowl'=>'')), 2=>array(0=>array('date'=>'2011-08-11','DNUF-titan'=>'444','DNUF-apollo'=>'900','DAUF-bossvegas'=>'','DNUF-fishbowl'=>''), 1=>array('date'=>'2011-08-12','DNUF-titan'=>'','DNUF-apollo'=>'','DAUF-bossvegas'=>'','DNUF-fishbowl'=>''), 2=>array('date'=>'2011-08-13','DNUF-titan'=>'','DNUF-apollo'=>'','DAUF-bossvegas'=>'','DAUF-fishbowl'=>'')) );
求合并数组的高效方法。
作者: ohmygirl 发布时间: 2011-08-30
$result = array(); $i = 0; while($ar = current($test)) { $key = key($test); $result[$i] = array(); foreach($ar as $v) { //print_r($v); $ar_keys = array_keys($v); $ar_values = array_values($v); for($j = 1; $j < count($ar_keys); $j ++) $ar_keys[$j] = $key.$ar_keys[$j]; array_push($result[$i], array_combine($ar_keys, $ar_values)); } $i ++; next($test); } print_r($result);
作者: T5500 发布时间: 2011-08-30
作者: T5500 发布时间: 2011-08-30
作者: T5500 发布时间: 2011-08-30
没看仔细。。这是个三维数组,第三维数组元素的键名拼接的规则是怎么样的啊,莫非原始数组$test只有固定的4个元素?
恩,是个三维数组,原始的数组中有7个元素,我只写了7个,对应的把原数组的第三维除了date外的键值拼为DAU-fishbowl这种形式。
作者: ohmygirl 发布时间: 2011-08-30
作者: ohmygirl 发布时间: 2011-08-30
作者: T5500 发布时间: 2011-08-30
如第一维有四个:titan,apollo,bossvegas,fishbowl
那么生成的结果数组中第三维数组应该包含五个(date,DAU-titan,DAU-fishbowl,DAU-bossvegas,DAU-apollo)
生成的结果数组的元素个数与原始数组第三维数组元素个数相等(也就是按照date合并的)。
作者: ohmygirl 发布时间: 2011-08-30
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28