php实行队列,PHP 实现队列类 仅供参考 | 学步园

实际开发中需要用到 PHP 类似队列的功能 于是乎 写了下面的类 写的比较仓卒 有BUG  欢迎Email 我,学习交流仅供参考。

/**

* 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

echo $this->length;

if($currentlengthlength&&$this->length>0) {

$this->queAdd($param);

}else if($this->length==0)

{

$param=empty($param)?0:$param;

$this->queue[]=$param;

}

else {

for ($i=0;$ilength-1;$i++)

{

$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='88|89|90';

$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);*/

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值