2017-02-16 2 views
0

Как проверить номер NHS с помощью контрольной цифры 11 (mod 11) с использованием PHP.Проверка контрольной цифры 11 (mod 11) с использованием PHP

После долгого поиска в Интернете, пытаясь найти функцию, которую я могу использовать для проверки номера контрольной цифры 11 (mod 11), я не мог найти, поэтому я в конечном итоге сам разворачиваюсь и делюсь ею. Надеюсь, кто-то мой найдет это полезным.

ответ

0

Код с комментариями:

###### Check Digit 11 Modulus 
function mod11($nhs_no){ 
    //Get Last Number 
    $checkDigit = (int)substr($nhs_no, -1); 
    //Get Remaining Numbers 
    $numbers = substr($nhs_no, 0, -1); 
    // Sort Numbers Into an Array 
    $numbers_array = str_split($numbers); 
    //Define the base for the weights 
    $base=2; 
    // Multiply the weights to the numbers 
    $numbers_array_reversed = array_reverse($numbers_array); 
    foreach($numbers_array_reversed as $number){$multiplier[$number.'x'.$base]=(float)$number * $base;$base++;} 
    //Get the total sum 
    $sum =(float) array_sum($multiplier); 
    $modulus = 11; 
    // Divide the sum by check digit 11 
    $divider = (float)($sum/$modulus); 
    // Get the remainder 
    $remainder = (int)(($divider - (int)$divider)*$modulus); 
    // Check if the remainder is matching with the last check digit 
    $results = (int) ($modulus-$remainder); 
    // Return true or false 
    return ($results == $checkDigit ? true : false); 
} 
Смежные вопросы