首页 > 代码库 > php 实现hash表

php 实现hash表

hash表又称散列表,通过把关键字key经过hash函数映射到hash表中某个位置获取记录。

存放记录的数组又称为hash表,映射函数称为hash函数

下面是php中实现hash表的方法

<?php/*hash表又称散列表,通过把关键字key经过hash函数映射到hash表中某个位置获取记录。 *  * 存放记录的数组就是hash表 *  */class hashtable{	private $buckets;//存储数据的数组	private $size = 10;//数组长度		public function __construct(){//hash表数组初始化		$this->buckets = new SplFixedArray($this->size);	}	/*=====hash函数=====*/	private function hashfun($key){		$strlen = strlen($key);		$hashval = 0;		for($i=0;$i<$strlen;$i++){			$hashval+=ord($key[$i]);		}				return $hashval%$this->size;	}		/*=====hash插入操作=====*/	public function insert($key,$val){		$index = $this->hashfun($key);		if(isset($this->buckets[$index])){			$newnode = new hashnode($key, $val,$this->buckets[$index]);//新增值在头部		}else{			$newnode = new hashnode($key, $val);		}		$this->buckets[$index] = $newnode;	}		/*=====hash表取值操作=====*/	public function find($key){		$index = $this->hashfun($key);		$current = $this->buckets[$index];				while(isset($current)){			if($current->key == $key){				return $current->value;			}			$current = $current->nextnode;		}		return NULL;	}}//拉链法解决冲突class hashnode{	public $key;	public $value;	public $nextnode;		public function __construct($key,$value,$nextnode=NULL){		$this->key = $key;		$this->value = http://www.mamicode.com/$value;>

  

php 实现hash表