(沒有版本資訊,可能只存在於 Git 中)
QuickHashStringIntHash::loadFromFile — 此工廠方法從檔案建立雜湊表
$filename
, 整數 $size
= 0, 整數 $options
= 0): QuickHashStringIntHash此工廠方法會從磁碟上的定義檔建立新的雜湊表。檔案格式包含簽名碼 'QH\0x21\0'
、以系統位元組順序表示的 32 位元帶符號整數形式的元素數量,以及一個包含後續字元元素資料數量的 32 位元無符號整數。此元素資料包含所有字串。接著是另一個 32 位元帶符號整數,包含儲存桶列表的數量。在標頭和字串之後,接著是元素。它們按儲存桶列表排序,因此不必雜湊鍵即可還原雜湊表。對於每個儲存桶列表,會儲存以下資訊(均為 32 位元整數):儲存桶列表索引、該列表中的元素數量,然後是成對的兩個 32 位元無符號整數元素,其中第一個是包含鍵的字串列表中的索引,第二個是值。範例如下
範例 #1 QuickHash StringIntHash 檔案格式
00000000 51 48 21 00 02 00 00 00 09 00 00 00 40 00 00 00 |QH!.........@...| 00000010 4f 4e 45 00 4e 49 4e 45 00 07 00 00 00 01 00 00 |ONE.NINE........| 00000020 00 00 00 00 00 01 00 00 00 2f 00 00 00 01 00 00 |........./......| 00000030 00 04 00 00 00 03 00 00 00 |.........| 00000039
範例 #2 QuickHash IntHash 檔案格式
header signature ('QH'; key type: 2; value type: 1; filler: \0x00) 00000000 51 48 21 00 number of elements: 00000004 02 00 00 00 length of string values (9 characters): 00000008 09 00 00 00 number of hash bucket lists (this is configured for hashes as argument to the constructor normally, 64 in this case): 0000000C 40 00 00 00 string values: 00000010 4f 4e 45 00 4e 49 4e 45 00 bucket lists: bucket list 1 (with key 7, and 1 element): header: 07 00 00 00 01 00 00 00 elements (key index: 0 ('ONE'), value = 0): 00 00 00 00 01 00 00 00 bucket list 2 (with key 0x2f, and 1 element): header: 2f 00 00 00 01 00 00 00 elements (key index: 4 ('NINE'), value = 3): 04 00 00 00 03 00 00 00
filename
要從中讀取雜湊表的檔案名稱。
size
要配置的儲存桶列表數量。您傳入的數字將自動進位到下一個 2 的次方數。它也會自動限制在 4
到 4194304
之間。
options
與類別建構函式相同的選項;除了大小選項會被忽略。它會從檔案格式中讀取(與 QuickHashIntHash 和 QuickHashIntStringHash 類別不同,它們會根據雜湊表中的項目數量自動計算)。
返回一個新的 QuickHashStringIntHash。
範例 #3 QuickHashStringIntHash::loadFromFile() 範例
<?php
$file = dirname( __FILE__ ) . "/simple.hash.string";
$hash = QuickHashStringIntHash::loadFromFile(
$file,
QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
$i = 48712 + $key * 1631;
$k = base_convert( $i, 10, 36 );
echo $k, ' => ', $hash->get( $k ), "\n";
}
?>
以上範例會輸出類似以下的內容:
11l4 => 48712 12uf => 50343 143q => 51974 15d1 => 53605 16mc => 55236 17vn => 56867 194y => 58498 1ae9 => 60129 1bnk => 61760 1cwv => 63391 1e66 => 65022 1ffh => 66653 1gos => 68284 1hy3 => 69915 1j7e => 71546 1kgp => 73177