Наиболее эффективный способ создания отчетов, компилирующих множество массивов данных PHP, упорядоченных по дате - PullRequest
1 голос
/ 19 декабря 2011

Я использую PHP и извлекаю данные из нескольких различных источников данных:

  1. Данные из Google Analytics

  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

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Немного грязное решение, но я думаю, что оно уместно.Часть кода, иллюстрирующая общую идею:

$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);
}
0 голосов
/ 19 декабря 2011

Сначала просматривайте массивы данных и преобразуйте их в какой-то унифицированный формат, проиндексированный по датам. После этого - все зависит от того, как вы хотите отобразить данные, но поскольку они затем будут проиндексированы по дате, лучше обрабатывать их любым удобным для вас способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...