我有一个带有一些预定义值的PHP数组:
$aArray = array(
0 => 'value0',
1 => 'value1'
);
我需要创建一个函数,其中字符串输入将始终返回相同的有效数组键,以便在我调用时:
GiveMeAKey('http://www.google.com'); // May return 0 or 1
我从数组中总是收到相同的密钥(我不关心哪一个)。显然我无法将关系存储在数据库中,传递给GiveMeAKey方法的字符串可以是任何URL。
我想知道是否有办法做到这一点?
答案 0 :(得分:3)
您可以从输入字符串中随机生成一些内容,并根据该内容选择一个键:
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不是一个很好的哈希函数,但它有一个很好的属性,它返回一个32位数字,你可以使用%
运算符。但就你的目的而言,它就足够了。
答案 1 :(得分:1)
我认为你想要的是Hash function。
答案 2 :(得分:1)
哈希函数的另一种替代方法可能是计算字符串的ASCII和,然后以模2返回。