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

时间:2014-09-20 09:36:12

标签: php 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];

谢谢

1 个答案:

答案 0 :(得分:0)

正如在文档(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值来扩展它。代码未经过测试