(PECL quickhash >= Unknown)
QuickHashIntStringHash::loadFromFile — Crée une table de hachage depuis un fichier
$filename
[, int $size
= 0
[, int $options
= 0
]] )Cette méthode factorielle crée une nouvelle table de hachage depuis un fichier de définition se trouvant sur le disque. Le format consiste en une signature 'QH\0x12\0', le nombre d'éléments sous la forme d'un entier signé sur 32 bits en système Endianness, un entier non-signé sur 32 bits contenant le nombre d'éléments de données suivants les caractères. Cette élément de données contient toutes les chaînes. Après l'ent-tête et les chaînes, les éléments suivent, sous la forme d'une paire de 2 entiers non-signés sur 32 bits, où le premier est la clé, et le second, l'index de l'élément de données. Voici un exemple :
Exemple #1 Format de fichier QuickHash IntString
00000000 51 48 12 00 02 00 00 00 09 00 00 00 4f 4e 45 00 |QH..........ONE.| 00000010 4e 49 4e 45 00 01 00 00 00 00 00 00 00 03 00 00 |NINE............| 00000020 00 04 00 00 00 |.....| 00000025
Exemple #2 Format de fichier QuickHash IntString
header signature ('QH'; key type: 1; value type: 2; filler: \0x00) 00000000 51 48 12 00 number of elements: 00000004 02 00 00 00 length of string values (9 characters): 00000008 09 00 00 00 string values: 0000000C 4f 4e 45 00 4e 49 4e 45 00 data string: 00000015 01 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 key/value 1 (key = 1, string index = 0 ("ONE")): 01 00 00 00 00 00 00 00 key/value 2 (key = 3, string index = 4 ("NINE")): 03 00 00 00 04 00 00 00
filename
Le nom du fichier depuis lequel la table de hachage sera lue.
size
La quantité de listes à créer. Le nombre passé sera automatiquement arrondi à la prochaine puissance de 2. Il sera également automatiquement limité à l'intervalle 4 - 4194304.
options
Les mêmes options que le constructeur de la classe ; sauf l'option taille qui sera ignorée. Elle sera automatiquement calculée pour correspondre au nombre d'entrées dans la table de hachage, arrondi à la puissance de 2 le plus proche avec une limite maximale de 4194304.
Returns a new QuickHashIntStringHash.
Exemple #3 Exemple avec QuickHashIntStringHash::loadFromFile()
<?php
$file = dirname( __FILE__ ) . "/simple.string.hash";
$hash = QuickHashIntStringHash::loadFromFile(
$file,
QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
printf( "Key %3d (%2x) is %s\n",
$key, $key,
$hash->exists( $key ) ? 'set' : 'unset'
);
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Key 0 ( 0) is unset Key 1 ( 1) is set Key 2 ( 2) is set Key 3 ( 3) is set Key 4 ( 4) is unset Key 5 ( 5) is set Key 6 ( 6) is unset Key 7 ( 7) is set Key 8 ( 8) is unset Key 9 ( 9) is unset Key 10 ( a) is unset Key 11 ( b) is set Key 12 ( c) is unset Key 13 ( d) is set Key 14 ( e) is unset Key 15 ( f) is unset