Tive que usar o cálculo do módulo 11 p/ encontrar o digito verificador de uma inscrição. Procurei se já tinha sido feito e não encontrei o que precisava, então criei uma função p/ isso, seguindo os cálculos apresentados na página da wikipedia ( http://pt.wikipedia.org/wiki/Dígito_verificador ).
Gostaria de saber se alguém tem alguma forma mais simples de fazer esse cálculo, ou se consegue melhorar a função.
Pergunta
Evandro Fontes
Fala galera,
Tive que usar o cálculo do módulo 11 p/ encontrar o digito verificador de uma inscrição. Procurei se já tinha sido feito e não encontrei o que precisava, então criei uma função p/ isso, seguindo os cálculos apresentados na página da wikipedia ( http://pt.wikipedia.org/wiki/Dígito_verificador ).
Gostaria de saber se alguém tem alguma forma mais simples de fazer esse cálculo, ou se consegue melhorar a função.
Segue função que desenvolvi:
function mod11($numero = ""){ if($str = strlen($numero) < 6) return ''; $str = strlen($numero); $cont = 7; for($i = 0; $i < $str; $i++){ $arr_str[] = substr($numero, $i, 1); } foreach($arr_str as $digito){ $result[] = $digito*$cont; $cont--; } $total = floatval( (array_sum($result)*10)/11); $digito = explode(".", $total); $seg_num = substr($digito[1], 1, 1); if($seg_num < 5){ $dv = ($seg_num >0)? (substr($digito[1], 0, 1))+1 : '0'; }else{ $digito = explode(".", round($total, 1)); $dv = (!$digito[1] || $digito[1] <= 9 )?$digito[1] : '0'; } return $dv; }falou!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.