Уникальный числовой хеш строки: как получить и применить – руководство

Уникальный ID для строки (числовой хеш строки)

В этой статье мы рассмотрим, как получить уникальный числовой хеш для строки. Этот хеш может использоваться в качестве идентификатора в базе данных. Ниже представлена функция, которая поможет вам создать такой числовой хеш.

Зачем нужен числовой хеш?

Числовые хеши позволяют создать уникальный идентификатор для строк, что полезно, когда необходимо работать с большими объемами данных, обеспечивая однозначность идентификаторов.

Как работает код?

Пример кода

Вот пример кода, который демонстрирует, как получить уникальный числовой хеш:


/**

  • Возвращает числовой хеш для указанной строки.
  • @param string $string Строка, которую нужно преобразовать в хеш.
  • @param int $len Максимальная длина возвращаемого числа. Максимум — 22. Длиной 13 достаточно для уникального числа.
  • (было протестировано на 1 000 000 строк).
  • Примечание: Максимальная длина для 64-битной системы — 18 цифр.
  • @return number
  • @version 1.0
  • @author Kama (wp-kama.com)
    */
    function num_hash( $string, $len = 13 ){

    $numhash = unpack( 'N2', md5( $string, true ) );

    $hash = $numhash[1] . $numhash[2];

    if( $len )
    $hash = substr( $hash, 0, $len );

    return (int) $hash;
    }

Объяснение кода

  1. Функция md5 — используется для получения хеша строки. Она возвращает строку фиксированной длины, которая затем преобразуется в числовой формат.

  2. Функция unpack — разбивает строку на части, которые можно интерпретировать как числа. В нашем случае, мы берем два 32-битных числа.

  3. Объединение — эти два числа соединяются вместе, чтобы получить более длинный хеш.

  4. Обрезка — если указана длина, хеш обрезается до нужного количества символов.

  5. Возврат результата — в конце функция возвращает числовой хеш в виде целого числа.

Проверка уникальности

Чтобы убедиться, что создаваемый хеш уникален, можно протестировать функцию с большим количеством строк. Вот пример, как это сделать:


$hashes = $strings = [];
for( $i = 1; $i < 1000000; $i++ ){
$str = 'some string'. $i;
$strings[] = $str;
$hashes[] = num_hash( $str, 13 );
}

print_r( [
'Пример сгенерированного хеша' => $hashes[0],
'Всего строк' => count( $strings ),
'Уникальных строк' => count( array_unique( $strings ) ),
'Уникальных хешей' => count( array_unique( $hashes ) ),
] );

В этом примере мы:

  • Генерируем строки с номером от 1 до 999999.
  • Сохраняем их в массивы.
  • Проверяем, сколько строк и хешей уникальны.

Заключение

Теперь вы знаете, как создать уникальный числовой хеш для строк в PHP. Это полезный инструмент для работы с базами данных и идентификаторами. Если у вас возникнут вопросы, не стесняйтесь их задавать!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *