Создать правильный ключ массива из строки URL в PHP - PullRequest
2 голосов
/ 30 января 2011

У меня есть массив PHP с некоторыми предопределенными значениями:

$aArray = array(
    0 => 'value0',
    1 => 'value1'
);

Мне нужно создать функцию, в которой при вводе строки всегда будет возвращаться один и тот же действительный ключ массива, чтобы при вызове:

GiveMeAKey('http://www.google.com');  // May return 0 or 1

Я всегда получаю один и тот же ключ (мне все равно, какой именно) из массива.Очевидно, я не могу сохранить отношения в базе данных, и строка, переданная методу GiveMeAKey, может быть любым URL.

Интересно, есть ли способ сделать это?

Ответы [ 3 ]

3 голосов
/ 30 января 2011

Вы можете сгенерировать что-то случайное из входной строки и выбрать ключ на основе этого:

function GiveMeAKey($str, array $array) {
    return $array[crc32($str) % count($array)];
}

Пример:

echo GiveMeAKey("http://www.google.com/", $aArray);    //value0
echo GiveMeAKey("http://www.altavista.com/", $aArray); //value1

ПРИМЕЧАНИЕ: CRC32 не является хорошей хеш-функцией, но имеет свойство nice, которое возвращает 32-битное число, которое вы можете использовать с оператором %. Но для ваших целей этого достаточно.

1 голос
/ 30 января 2011

Другой альтернативой хеш-функции может быть что-то вроде вычисления ASCII-суммы строки и ее возврата по модулю 2.

1 голос
/ 30 января 2011

Я думаю, что вы хотите хэш-функция .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...