// пишу на js, на php уже забыл как писать:)
// исходный массив данных
var data = {
1555349065: 3,
1555349059: 10,
1555349057: 4,
1555349047: 12,
1555349037: 8,
1555349027: 11,
1555349017: 2
};
// далее понадобится некий интервал, внутри которого мы будем вычислять значения с обпределенным шагом
// для этих целей возмем таймштамп из первой и последней ячеек, вы же можете указать любой, удобный вам
// получим массив ключей (специфика js) и навсякий случай отсортируем его:)
var times = Object.keys(data).sort();
// начальное значение интервала времени
var start = +times.shift();
// следующее за начальным значение интервала времени
var next = +times.shift();
// конечное значение интервала времени
var stop = +times[times.length-1];
// зададим шаг вычислений (поставил равным 3 чтобы было интересней)
var step = 3;
// все готово для вычисления средних значений. Тут есть несколько особенностей, по сути данная задачя является интерполяцией
// а интерполяции бывают разными. Общей особенностью любой интерполяции является то, то они не дают точный результат
// далее для вычисления средних значений я буду использовать самую простую интерполяцию - линейную
// создадим ассоциативный массив, в который будем складывать результаты вычислений
var result = {};
for(var i=start; i<stop; i+=step ){
console.log(i);
// если долши до следующего значения
if(i>=next){
start = next;
next = +times.shift();
}
// вычисляем промежуточное хначение (тут вся соль, и при этом это простая пропорция)))
var dx = next-start;
var dy = data[next]-data[start];
var dt = i-start;
result[i] = data[start] + dt*dy/dx;
}
// выводим результат
console.log(result);
ну и результат:
{
'1555349017': 2,
'1555349020': 4.7,
'1555349023': 7.4,
'1555349026': 10.1,
'1555349029': 10.4,
'1555349032': 9.5,
'1555349035': 8.6,
'1555349038': 8.4,
'1555349041': 9.6,
'1555349044': 10.8,
'1555349047': 12,
'1555349050': 9.6,
'1555349053': 7.2,
'1555349056': 4.8,
'1555349059': 10,
'1555349062': 6.5
}