1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 介紹PHP Hash算法

        時間:2024-10-21 22:26:03 PHP 我要投稿
        • 相關推薦

        介紹PHP Hash算法

          這篇文章主要介紹了PHP Hash算法:Times33算法代碼實例,本文直接給出實現代碼,需要的朋友可以參考下

          最近看書,里面提到了一些Hash算法。比較有印象的是Times33,當時理解不是很透測,今天寫了段程序來驗證了一下。

          先上代碼:

          復制代碼 代碼如下:

          /**

          * CRC32 Hash function

          * @param $str

          * @return int

          */

          function hash32($str)

          {

          return crc32($str) >> 16 & 0x7FFFFFFF;

          }

          /**

          * Times33 Hash function

          * @param $str

          * @return int

          */

          function hash33($str)

          {

          $hash = 0;

          for($i=0; $i

          $hash += 33 * $hash + ord($str{$i});

          }

          return $hash & 0x7FFFFFFF;

          }

          $n = 10;

          // Test Case 1

          $stat = array();

          for($i=0; $i<10000; $i++){

          $str = substr(md5(microtime(true)), 0, 8);

          $p = hash32($str) % $n;

          if(isset($stat[$p])){

          $stat[$p]++;

          }else{

          $stat[$p] = 1;

          }

          }

          print_r($stat);

          // Test Case 2

          $stat = array();

          for($i=0; $i<10000; $i++){

          $str = substr(md5(microtime(true)), 0, 8);

          $p = hash33($str) % $n;

          if(isset($stat[$p])){

          $stat[$p]++;

          }else{

          $stat[$p] = 1;

          }

          }

          print_r($stat);

          以上有兩個測試用例。第一個,用CRC32的方法;第二個是Times33的算法實現。

          效果:

          結果分布,兩種算法不相上下(估計是數據源的問題,md5只有0-f)。也有文章說CRC32的分布更均勻(參考鏈接:)

          但耗費時間,CRC32比Times33快將近一倍。

          為什么是33?

          即是素數(質數),也是奇數。除了33,還有131, 1313, 5381等。PHP內置的Hash函數用的是5381,在“鳥哥”的一篇博文中也有提到。

        【介紹PHP Hash算法】相關文章:

        簡單介紹php構造函數用法08-31

        精選php面試自我介紹范文14篇08-29

        Smarty (PHP模板引擎)知識點介紹06-12

        關于php面試寶典及PHP面試技巧08-16

        簡單分析PHP中序列化用法介紹08-15

        PHP的壓縮函數06-21

        php高級教程01-23

        如何學好PHP知識09-20

         PHP的基礎編程與應用10-16

        淺析php函數的實例06-08

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>