Heim  >  Artikel  >  Backend-Entwicklung  >  PHP 兑现队列类 仅供参考

PHP 兑现队列类 仅供参考

WBOY
WBOYOriginal
2016-06-13 13:06:191034Durchsuche

PHP 实现队列类 仅供参考

<?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); 


?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn