This article describes the example of PHP implementing the Luhn algorithm to verify whether the credit card number is valid. Share it with everyone for your reference. The specific implementation method is as follows:
$numbers = "49927398716 49927398717 1234567812345678 1234567812345670"; foreach (split(' ', $numbers) as $n) echo "$n is ", luhnTest($n) ? 'valid' : 'not valid', '</br>'; function luhnTest($num) { $len = strlen($num); for ($i = $len-1; $i >= 0; $i--) { $ord = ord($num[$i]); if (($len - 1) & $i) { $sum += $ord; } else { $sum += $ord / 5 + (2 * $ord) % 10; } } return $sum % 10 == 0; }
Run results
49927398716 is valid 49927398717 is not valid 1234567812345678 is not valid 1234567812345670 is valid
Here is a more concise code:
Copy code The code is as follows: function luhn_test($num) {
$str = '';
foreach( array_reverse( str_split( $num ) ) as $i => $c ) $str .= ($i % 2 ? $c * 2 : $c );
Return array_sum( str_split($str) ) % 10 == 0;
}
foreach (array('49927398716','49927398717','1234567812345678','1234567812345670') as $n)
echo "$n is ", luhn_test($n) ? 'valid' : 'not valid', "n";
The output results are as follows
49927398716 is valid 49927398717 is not valid 1234567812345678 is not valid 1234567812345670 is valid
I hope this article will be helpful to everyone’s PHP programming design.