= 0; $i -= 2) { $even += $digits[$i]; } $odd = 0; for ($i = $length - 2; $i >= 0; $i -= 2) { $odd += $digits[$i]; } return (10 - ((3 * $even + $odd) % 10)) % 10; } /** * Checks whether the provided number is an EAN compliant number and that * the checksum is correct. * * @param string $ean An EAN number * @return boolean */ public static function isValid($ean) { if (!preg_match(self::PATTERN, $ean)) { return false; } return self::checksum(substr($ean, 0, -1)) === intval(substr($ean, -1)); } }