为md5哈希分配一个数字(1到9之间)

Ton*_*ony 3 php md5

有一个像md5哈希:

md5("test") = "098f6bcd4621d373cade4e832627b4f6"
Run Code Online (Sandbox Code Playgroud)

每次将md5哈希值传递给它时,如何编写一个函数来返回1到9之间的数字?数字必须始终相同,即myfunc("098f6bcd4621d373cade4e832627b4f6")应始终返回相同的数字.谢谢你的帮助.

sbe*_*rry 5

这是过度杀伤,并且返回最左边数字的建议是最好的......

function myfunc($md5) {
    $total = 0;
    foreach (str_split($md5) as $char) $total += ord($char);
    return $total % 9 + 1;
}

echo myfunc("098f6bcd4621d373cade4e832627b4f6");
Run Code Online (Sandbox Code Playgroud)

这样,您可以通过修改返回参数轻松更改您感兴趣的返回值范围.

或者,更紧凑的版本:

function myfunc2($md5) {
    return array_sum(array_map("ord", str_split($md5))) % 9 + 1;
}
Run Code Online (Sandbox Code Playgroud)

您甚至可以将最小值和最大值作为args传递:

function myfunc2($md5, $min = 1, $max = 9) {
    return array_sum(array_map("ord", str_split($md5))) % $max + $min;
}

myfunc2("098f6bcd4621d373cade4e832627b4f6", 10, 20);
Run Code Online (Sandbox Code Playgroud)