使用Queue计算PHP中最后一个值的平均值


calculating the average of last values in PHP using Queue

我的问题很容易理解,我需要循环一个表,并计算最后4个值的平均值。我尝试使用Queue来推送当前值,并弹出推送的第一个值。

我有2个问题,Queus作为Stack工作,当我弹出时,最后一个值会熄灭,而不是第一个

$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个值的平均值,你可以创建一个新的数组,其中包含队列dequeue()的4个值,然后在它上使用array_sum($a)/ count($a)

如果你不想创建一个新的阵列,你可以简单地:

$sum = 0;
$lastElements = 4;
for($i = 0;$i<$lastElements;$i++)
   $sum+= $q.dequeue()
echo $sum/$lastElements;

您可以通过更改$lastElements值来扩展它。代码未经测试