Это WAY-излишество, и предложение возврата самой левой цифры является лучшим ...
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);