(没有版本信息可用,可能只在 Git 中)
QuickHashStringIntHash::loadFromFile — 此工厂方法从文件创建哈希
$filename
, int $size
= 0, int $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
类构造函数接受的相同选项;除了 size 选项被忽略。它从文件格式中读取(与 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