У меня есть два массива соответствующих данных. Один со значениями, а другой со временем. Я округляю время до ближайших 5 минут, и в результате у меня есть новый массив с часами, которые повторяются. Я группирую равные часы, подсчитываю их, устанавливаю их соответствующие значения в другом массиве и беру среднее значение за этот час. вот код:Получите среднее значение последней группы в массиве
$first_hour = array('11:01', '12:04', '13:00', '15:28', "15:43", "15:53", "15:55", "16:02", "16:05", "16:17", "16:15", "16:21", "16:25", "16:33", "16:35", "16:43", "16:45", "16:56", "16:58", "17:00", "17:04", "17:07", "17:19");
$values = array(12, 23, 5, 90, 12, 23, 45, 56, 12, 15, 43, 48, 54, 62, 52, 41, 74, 54, 84, 75, 96, 69, 36);
$minutes = 5;
$precision = 60 * $minutes;
$time = "00:00";
$average = 0;
//round first array to nearest 5 minutes
$timestamp = strtotime($first_hour);
$data_ora = date("H,i", round($timestamp/$precision) * $precision);
//the hours array will become like this:
$first_hour = array('11:00', '12:05', '13:00', '15:30', "15:45", "15:50", "15:55", "16:00", "16:05", "16:15", "16:15", "16:20", "16:25", "16:35", "16:35", "16:45", "16:45", "17:00", "17:00", "17:00", "17:05", "17:10", "17:20");
if ($first_hour == $time) {
if ($values[$i] > 0) {
$indexi = $indexi + 1;
$total = $total + $values;
echo "</br> total = ".$total;
$i++;
} else {
$time = date("H,i", round($timestamp/$precision) * $precision);
//echo "time has changed";
$average = $total/$index;
$dataora = date("Y,m,d", round($timestamp)) . "," . $time;
//fill in the vectors
$v[1] = $average;
$v[2] = $dataora;
echo "</br> average = " . $v[1];
$indexi = 0;
$totali = 0;
}
}
Выход таков:
"total = 2996
total = 3325
total = 3656
total = 3996
average = 333
total = 329
total = 652
total = 976
total = 1304
total = 1630
total = 1961
total = 2297
total = 2629
average = 328.625
total = 332
total = 660
total = 997
total = 1320
total = 1646
total = 1967
Для каждой группы есть средняя рассчитывается для последней группы значений, за исключением. Как я могу рассчитать его среднее значение? Для последней группы она попадает в первое условие, но не требуется перерыв (час изменения), чтобы попасть в else
, чтобы вычислить среднее значение.
Этот вывод имеет фактический код, тот, который приведен выше, является аналогичным, но с меньшим количеством данных для целей тестирования! – Mirela
Где: echo "total" в вашем коде? – SaidbakR
@ sємsєм находится во втором состоянии «если». Я только что отредактировал код .. извините, я пропустил это. – Mirela