队列 Quene
队列是比较常用的数据结构之一,其特点是先进先出。比如数据库请求太多,服务器一下子处理不过来的时候,就可以使用队列先将请求逐条顺序存放起来,然后逐一从队列中取出数据执行,这样便起到了分散压力的作用。
其实PHP自带的数组非常强大,有一些便捷的函数可以轻松的实现队列。
队列基本的方法有:
- 判断是否为空(isEmpty),
- 队列长度(size),
- 入队列(push),
- 出队列(pop),
代码举例:
<?php
class Quene{
private $data;
public function __construct()
{
$this->data = [];
}
public function isEmpty()
{
return empty($this->data) ? true : false;
}
// 入队列
public function push($item)
{
array_unshift($this->data,$item);
}
// 出队列
public function pop()
{
array_pop($this->data);
}
// 队列长度
public function size()
{
return count($this->data);
}
// 这个是便于测试写的方法
public function read()
{
return $this->data;
}
}
$q = new Quene();
print_r($q->read());echo '<br>';
$q->push('a');
print_r($q->read());echo '<br>';
$q->push('b');
print_r($q->read());echo '<br>';
$q->pop();
print_r($q->read());echo '<br>';
$q->pop();
print_r($q->read());echo '<br>';
结果如下:
栈 Stack
栈也是比较常用的数据结构之一,其特点是后进先出(LIFO - last in first out)。
栈的基本的方法和队列类似:
- 判断是否为空(isEmpty),
- 栈长度(size),
- 入栈(push),
- 出栈(pop),
代码举例:
<?php
class Stack{
private $data;
public function __construct()
{
$this->data = [];
}
public function isEmpty()
{
return empty($this->data) ? true : false;
}
// 入栈
public function push($item)
{
array_unshift($this->data,$item);
}
// 出栈
public function pop()
{
array_pop($this->data);
}
// 栈长度
public function size()
{
return count($this->data);
}
// 这个是便于测试写的方法
public function read()
{
return $this->data;
}
}
$s = new Stack();
print_r($s->read());echo '<br>';
$s->push('a');
print_r($s->read());echo '<br>';
$s->push('b');
print_r($s->read());echo '<br>';
$s->pop();
print_r($s->read());echo '<br>';
$s->pop();
print_r($s->read());echo '<br>';
结果如下: