php 数组模拟队列
维护代码的时候,发现了一段比较有意思的代码:
$history_number = 3;
$m_history = get_cookie('mcity');
if (!empty($m_history))
{
$history = explode(',', $m_history);
array_unshift($history, $mcityid);
$history = array_unique($history);
while (count($history) > $history_number)
{
array_pop($history);
}
set_cookie('mcity', implode(',', $history), $DT_TIME + 7*86400);
}
主要功能是 cookie 存储前端地址信息。通过 array_unshift()
方法往队列头部添加元素。为维护队列长度 3,需要在队列长度超过 3 时,再通过 array_pop()
从队列末尾去除一个元素。
在 php 中并没有复杂的堆栈、链表之类的数据结构,只有数组。默认数组属于有序集合,这一点从数组的几个操作函数可以看出来。
array_push()
和 array_pop()
是从数组末尾添加和移除一个元素。
array_unshift()
和 array_shift()
是从数组头部添加和移除一个元素。
队列是“先进后出”,栈是“先进先出”。这个例子属于“先进后出”,所以算是队列的一种实现。