人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      php 實現(xiàn)Hash表功能實例詳解

php 實現(xiàn)Hash表功能實例詳解

標(biāo)簽: 發(fā)布日期:2016-11-29 00:00:00 291

php 實現(xiàn)Hash表功能

Hash表作為最重要的數(shù)據(jù)結(jié)構(gòu)之一,也叫做散列表。使用PHP實現(xiàn)Hash表的功能。PHP可以模擬實現(xiàn)Hash表的增刪改查。通過對key的映射到數(shù)組中的一個位置來訪問。映射函數(shù)叫做Hash函數(shù),存放記錄的數(shù)組稱為Hash表。

Hash函數(shù)把任意長度的和類型的key轉(zhuǎn)換成固定長度輸出。不同的key可能擁有相同的hash。
Hash表的時間復(fù)雜度為O(1)

<?php
class HashTable{
  private $arr = array();
  private $size = 10;
  public function __construct(){
    //SplFixedArray創(chuàng)建的數(shù)組比一般的Array()效率更高,因為更接近C的數(shù)組。創(chuàng)建時需要指定尺寸
    $this->arr = new SplFixedArray($this->size);
  }
  /**
   * Description: 簡單hash算法。輸入key,輸出hash后的整數(shù)
   * @param $key
   * @return int
   */
  private function simpleHash($key){
    $len = strlen($key);
    //key中每個字符所對應(yīng)的ASCII的值
    $asciiTotal = 0;
    for($i=0; $i<$len; $i++){
      $asciiTotal += ord($key[$i]);
    }
    return $asciiTotal % $this->size;
  }
  /**
   * Description: 賦值
   * @param $key
   * @param $value
   * @return bool
   */
  public function set($key, $value){
    $hash = $this->simpleHash($key);
    $this->arr[$hash] = $value;
    return true;
  }
  /**
   * Description: 取值
   * @param $key
   * @return mixed
   */
  public function get($key){
    $hash = $this->simpleHash($key);
    return $this->arr[$hash];
  }
  public function getList(){
    return $this->arr;
  }
  public function editSize($size){
    $this->size = $size;
    $this->arr->setSize($size);
  }
}
?>