Jump to content

Luhn test of credit card numbers: Difference between revisions

→‎{{header|PHP}}: different version
(Simplified D code)
(→‎{{header|PHP}}: different version)
Line 1,155:
 
=={{header|PHP}}==
{{trans|C}}
<lang php>function luhn($num){
<lang php>$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
$sum = 0;
foreach (split(' ', $numbers) as $n)
$alt = false;
echo "$n is ", luhnTest($n) ? 'valid' : 'not valid', '</br>';
for ($i = strlen($num)-1; $i>=0; $i--){
 
$n = substr($num,$i,1);
<lang php>function luhnluhnTest($num) {
if($alt){
for ( $ilen = strlen($num)-1; $i>=0; $i--){
$n *= 2;
$n -= for ($ni >= 9)$len-1; ?$i 9 :>= 0; $i--) {
$ord = ord($num[$i]);
}
if (($len - 1) & $i) {
$sum += $n;
$altsum += !$altord;
} else {
}
$sum += $ord / 5 + (2 * $ord) % 10;
return ($sum%10==0);
}
}
return ($sum % 10 == 0);
}</lang>
 
<pre>49927398716 is valid
49927398717 is not valid
1234567812345678 is not valid
1234567812345670 is valid</pre>
 
=={{header|PicoLisp}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.