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