0

我在 PHP 中有一个大数组,大约有 168000 个键和值。键中有日期(Ymd)和小时,值中有数值。所以 value 只是一个数字。密钥为 Ym-d_H 格式。数组如下所示:

$input = array('2008-01-01_00' => 123, '2008-01-01_01' => 456, ...... , '2012-09-22_16' => 789);

我需要找到上个月、去年、当年、当月等的总和。找到它的最佳方法是什么?请建议。

4

3 回答 3

0

将键更改为整数,例如

'2008-01-01_00' -> 2008010100

使用 ksort() 对数组进行排序

然后,您可以使用快速搜索查找 2008010100 和 2009010100 之间的内容。

此外,Fastest 是遍历数组一次并计算您需要的所有统计信息。

于 2012-09-22T12:13:30.757 回答
0

将其分解为可管理的执行单元并将它们线程化...

http://pthreads.org/

于 2012-09-22T12:15:59.490 回答
0

那这个呢:

$results=array();

foreach ($input as $k=>$v) {

  $date=explode('_',$k);
  $date=explode('-',$date[0]);

  //Store year
  $key=$date[0];
  if (!isset($results[$key])) $results[$key]=0;
  $results[$key]+=$v;

  //Store month
  $key.='-'.$date[1];
  if (!isset($results[$key])) $results[$key]=0;
  $results[$key]+=$v;

  //Store day
  $key.='-'.$date[2];
  if (!isset($results[$key])) $results[$key]=0;
  $results[$key]+=$v;
}

print_r($results);
于 2012-09-22T10:09:29.463 回答