<?php
/**
* PHP Class for queue
* @author yangqijun@live.cn
* @copyright DataFrog Beijingbei Ltd. 2011-07-25
*/
class Queue {
public $length=12;
public $queue = array(); // if String like this "22,23,24" convert to array to do queue
public $delimiter=',';
function __construct($queue=array())
{
$this->queue=$queue;
}
/**
* @desc start queue
* @param String $param new queue element
*/
public function run($param)
{
if(!is_array($this->queue)){
$this->strToQue();
}
$currentlength=$this->countqueue(); //Count the queue length
if($currentlength<$this->length&&$this->length>0) {
$this->queAdd($param);
}else if($this->length=0)
{
$this->queue[]=$param;
}
else {
$this->queRemove();
$this->queAdd($param);
}
return $this->queue;
}
/**
* String like this "22,23,24" convert to array to do queue
* @param String $string
* @param String $delimiter
*/
public function strToQue (){
if (empty($this->queue))
{
$this->queue=array();
}
else
{
$this->queue=explode($this->delimiter,$this->queue);
}
}
/**
* insert $node into queue
* @param string $node
*/
private function queAdd($node){
array_push($this->queue,$node);
$this->countqueue();
}
private function queRemove(){
$node = array_shift($this->queue);
$this->countqueue();
return $node;
}
private function countqueue(){
$currentlength= count($this->queue);
return $currentlength;
}
function __destruct()
{
unset($this->queue);
}
}
//example
$str='' ; //array();
$obj=new Queue ($str);
$obj->length=8; // 队列元素长度
$obj->delimiter='|'; //如果队列是字符串,则元素直接的分隔符为|
$a=$obj->run('91'); //要添加到队列中的元素
$a=$obj->run('92');
$a=$obj->run('93');
$a=$obj->run('94');
print_r($a);
?>
分享到:
相关推荐
<项目介绍> 基于PHP+Redis实现的延时队列 -------- 不懂运行,下载完可以私聊问,可远程教学 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1...
下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1...
本文将详细介绍如何利用`SaeMail`类实现不同类型的邮件发送,并提供实例代码供参考。 首先,`SaeMail`类提供了两种主要的发送方法:`quickSend()`和`send()`。`quickSend()`方法适用于简单场景,它不涉及SMTP配置,...
在线聊天室系统是一种基于互联网的实时通信平台,它允许用户通过文字、...不过,需要注意的是,由于源码仅供学习研究,不提供技术支持,因此在实际使用时可能会遇到问题,需要开发者具备一定的调试和解决问题的能力。
这可能包含所有必要的PHP源码、配置文件、示例代码以及文档,供开发者参考和使用。 总的来说,CydiaPHP是一个强大的工具,它为Cydia的开发者提供了构建和管理自定义存储库的手段,同时具备处理下载队列和UDID保护等...
在IT行业中,设计一个抽奖成功的上下滑动提示是一种常见的用户界面(UI)设计技术,用于吸引用户的注意力并提供反馈。...压缩包中的"scroll"文件可能包含了实现这一功能的代码示例或设计资源,供开发者参考和学习。
【Laravel开发与Hipchat集成】 在Web开发领域,Laravel是一个广受欢迎的PHP框架,以其优雅的语法、强大的...在提供的压缩包`hipchat-laravel-master`中,可能包含了实现这些功能的源代码,可以作为学习和参考的实例。
日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...
描述部分提到了演讲的具体来源(http://www.infoq.com/presentations/Social-Networks-NoSQL),这表明演讲内容被发布于InfoQ网站上,供广大IT从业者参考学习。通过这个演讲,听众可以了解到NoSQL技术在处理社交网络...