我的问题很容易理解,我需要循环一个表并计算每个最后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];
?
谢谢
答案 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值来扩展它。代码未经过测试