2013-03-21 1 views
0

Предположим, у меня есть база данных из 100 000 более или менее случайных строк, и я хочу создать число из каждой строки от 1 до 500.В php, как бы я создал фиксированное число из строки в пределах определенного диапазона значений

Мой метод должен всегда генерировать одинаковое число (с той же строкой), и оно должно быть равномерным распределением чисел от 1 до 500.

Любые идеи?

+0

Вы ищете свой собственный метод кодирования строки? : o –

+2

Используйте CRC (функция PHP crc32() - http://php.net/manual/en/function.crc32.php), затем скорректируйте результат, чтобы он соответствовал вашему диапазону. –

+0

Почему -1 голос? –

ответ

1

Похоже, вам нужна функция хеширования. Вы можете использовать crc32 и modulus operator:

echo abs(crc32("hello world")) % 500 + 1; 
+1

Обратите внимание: crc32() возвращает целое число со знаком и, следовательно, может быть -1234567. Для использования в моем случае добавление abs() вокруг функции crc32() выполнило трюк –

0

Вы также можете использовать что-то вроде:

function string_to_decimal($hex_str) 
{ 
    $arr = str_split($hex_str, 4); 
    foreach ($arr as $grp) { 
     $dec[] = str_pad(hexdec($grp), 5, '0', STR_PAD_LEFT); 
    } 
    return implode('', $dec); 
} 
Смежные вопросы