首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建报表的最有效方法编译许多按日期组织的PHP数据数组

创建报表的最有效方法编译许多按日期组织的PHP数据数组
EN

Stack Overflow用户
提问于 2011-12-19 14:12:41
回答 2查看 196关注 0票数 1

我使用PHP并从几个不同的数据源中提取数据:

  1. 数据来自Google分析
  2. 数据来自MySQL数据库
  3. 数据来自ElasticSearch系统

结果是,我有大约8个PHP数组,为期30天。有些数组有30个元素,每个元素代表30天周期中的一天,而有些数组有较少的行(因为某一天没有活动)。

对我来说,最聪明的数据列表方法是什么?我想到的最直接的解决方案是遍历报表的时间(即for($startDate = x, $startDate < $endDate, $startDate + 1 day)),然后为每一天在每个数组中找到相应的值。这种方法的问题是,我将有一个for循环30次,每个循环将循环8个数组的数据最多30次.

有什么建议吗?

样本数组:http://bin.cakephp.org/view/953092822

EN

回答 2

Stack Overflow用户

发布于 2011-12-19 14:42:06

有点肮脏的解决办法,但我认为这是合适的。一段用来说明一般思想的代码:

代码语言:javascript
运行
复制
$date1 = '2011-12-19';
$date2 = '2011-12-20';
$date3 = '2011-12-21';
$array1 = array($date1=>array('res1'=>'asdasdasd'),$date2=>array('res1'=>'qweqweqweqwe'));
$array2 = array($date1=>array('res2'=>'123123123'),$date3=>array('res2'=>'456456456'));

$res = array_merge_recursive($array1,$array2);
var_dump($res);

因此,我们的想法是让数组用唯一的键将数据存储在元素中,而不是使用array_merge_recursive来收集所有的数据。因此,要使它正常工作,您需要使用这样的方法对数据进行预处理:

代码语言:javascript
运行
复制
$arr = array($date1=>'qweqwe', $date2=>'asdasd');

foreach($arr as $key=>$value){
    $arr[$key]=array('<unique source name here>'=>$value);
}
票数 1
EN

Stack Overflow用户

发布于 2011-12-19 14:39:05

首先遍历数据数组,并将其转换为某种统一格式,并按日期进行索引。在此之后,一切都取决于您希望如何显示数据,但由于数据将被编入日期索引,所以最好以您所能想到的任何方式来处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8562579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档