Моя проблема проста для понимания, мне нужно зациклить таблицу и вычислить среднее значение для каждого из последних 4 значений. Я пытаюсь использовать очередь, чтобы нажать текущее значение и вытолкнуть первое значение нажал.
У меня есть 2 проблемы, Queus работает как стек, когда я поп, последнее значение выходит, а не первое
$q = new SplQueue();
$q->push(1);
$q->push(2);
$q->push(3);
$q->push(4);
$q->push(5);
$q->pop();
Я получаю этот массив как ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) )
Я хочу этот массив как ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 ) )
Вторая проблема, как использовать array_sum($q) / $counter[$q];
в очереди?
Спасибо
Как сказано в документации (http://php.net/manual/ro/class.splqueue.php ), если вы используете push()
а также pop()
он будет вести себя как стек. использование enqueue()
а также dequeue()
Если вы хотите получить среднее значение за последние 4 значения, вы можете создать новый массив, содержащий 4 значения из вашей очереди dequeue()
затем используйте array_sum($a)/ count($a)
в теме
Если вы не хотите создавать новый массив, вы можете просто:
$sum = 0;
$lastElements = 4;
for($i = 0;$i<$lastElements;$i++)
$sum+= $q.dequeue()
echo $sum/$lastElements;
И вы можете масштабировать это, изменяя значение $ lastElements. Код не проверен
Других решений пока нет …