2017-02-16 10 views
0

PHPを使用してチェックデジット11(mod 11)を使用してNHS番号を検証する方法。PHPを使用してチェックデジット11(mod 11)を検証する

私がチェックデジット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); 
} 
関連する問題