- substr: documentation ( source)
- var_dump: documentation ( source)
<?php
class Luhn {
public static function getDigit($number) {
$number .= 0;
$result = self::check($number);
echo $result;
return (10 - $result);
}
public static function check($number) {
$sum = 0;
$numDigits = strlen($number) - 1;
$parity = $numDigits % 2;
for ($i = $numDigits; $i >= 0; $i--) {
$digit = substr($number, $i, 1);
if (!$parity == ($i % 2)) {$digit <<= 1;}
$digit = ($digit > 9) ? ($digit - 9) : $digit;
$sum += $digit;
}
return (0 == ($sum % 10));
}
}
$checkd = Luhn::getDigit(1234567891234567891);
echo $checkd;
var_dump(Luhn::check("1234567891234567891" . $checkd));