QuickHashStringIntHash::loadFromFile

(No version information available, might only be in Git)

QuickHashStringIntHash::loadFromFileФабричный метод создаёт хеш из файла

Описание

publicstaticQuickHashStringIntHash::loadFromFile(string$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
To Top