Luhn算法
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
function checkCard($card){ $num = 0; $card = str_split(trim($card)); krsort($card); $i = 1; foreach($card as $val){ if ($i % 2) {//奇数 $num += $val; } else {//偶数 $n = $val * 2; if ($n > 9) $n -= 9; $num += $n; } $i++; } return (($num % 10) == 0);}