<?php
/**
* 通过 PHP 数组实现的队列
*/
class SimpleQueue
{
private $_queue = [];
private $_size = 0;
public function __construct($size = 10)
{
$this->_size = $size;
}
// 入队
public function enqueue($value)
{
if (count($this->_queue) > $this->_size) {
return false;
}
array_push($this->_queue, $value);
}
// 出队
public function dequeue()
{
if (count($this->_queue) == 0) {
return false;
}
//array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。
//所有的数字键名将改为从零开始计数,文字键名将不变。
//返回移出的值,如果 array 为 空或不是一个数组则返回 NULL。
return array_shift($this->_queue);
}
public function size()
{
return count($this->_queue);
}
}
$queue = new SimpleQueue(5);
$queue->enqueue(1);
$queue->enqueue(3);
$queue->enqueue(5);
var_dump($queue->dequeue()); # 1
var_dump($queue->size()); # 2