我使用PHP并从几个不同的数据源中提取数据:
结果是,我有大约8个PHP数组,为期30天。有些数组有30个元素,每个元素代表30天周期中的一天,而有些数组有较少的行(因为某一天没有活动)。
对我来说,最聪明的数据列表方法是什么?我想到的最直接的解决方案是遍历报表的时间(即for($startDate = x, $startDate < $endDate, $startDate + 1 day)
),然后为每一天在每个数组中找到相应的值。这种方法的问题是,我将有一个for
循环30次,每个循环将循环8个数组的数据最多30次.
有什么建议吗?
发布于 2011-12-19 14:42:06
有点肮脏的解决办法,但我认为这是合适的。一段用来说明一般思想的代码:
$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
来收集所有的数据。因此,要使它正常工作,您需要使用这样的方法对数据进行预处理:
$arr = array($date1=>'qweqwe', $date2=>'asdasd');
foreach($arr as $key=>$value){
$arr[$key]=array('<unique source name here>'=>$value);
}
发布于 2011-12-19 14:39:05
首先遍历数据数组,并将其转换为某种统一格式,并按日期进行索引。在此之后,一切都取决于您希望如何显示数据,但由于数据将被编入日期索引,所以最好以您所能想到的任何方式来处理。
https://stackoverflow.com/questions/8562579
复制相似问题