有一个像这样的 md5 散列:
md5("test") = "098f6bcd4621d373cade4e832627b4f6"
如何编写一个函数,使其在每次向其传递 md5 哈希值时返回 1 到 9 之间的数字?数字必须始终相同,即 myfunc("098f6bcd4621d373cade4e832627b4f6") 应始终返回相同的数字。 谢谢你的帮助。
最佳答案
这太过分了,返回最左边数字的建议是最好的...
function myfunc($md5) {
$total = 0;
foreach (str_split($md5) as $char) $total += ord($char);
return $total % 9 + 1;
}
echo myfunc("098f6bcd4621d373cade4e832627b4f6");
这样您就可以通过修改返回语句轻松更改您感兴趣的返回值范围。
或者,更紧凑的版本:
function myfunc2($md5) {
return array_sum(array_map("ord", str_split($md5))) % 9 + 1;
}
您甚至可以将最小值和最大值作为参数传递:
function myfunc2($md5, $min = 1, $max = 9) {
return array_sum(array_map("ord", str_split($md5))) % $max + $min;
}
myfunc2("098f6bcd4621d373cade4e832627b4f6", 10, 20);
关于php - 为 md5 哈希分配一个数字(1 到 9 之间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988230/