# Generating UPC check digit

The following small code generates check digit for UPC-A codes. You can use it for example to generate random UPC-A codes.

#### Check digit calculation

The check digit is calculated as follows:
1. Add the digits in the odd-numbered positions together and multiply by three.
2. Add the digits in the even-numbered positions to the above result.
3. Find the result modulo 10 (i.e. the remainder when the result is divided by 10).
4. If the result is not zero, subtract the result from ten.

#### Code

```

function generate_upc_checkdigit(\$upc_code)
{
\$odd_total  = 0;
\$even_total = 0;

for(\$i=0; \$i<11; \$i++)
{
if(((\$i+1)%2) == 0) {
/* Sum even digits */
\$even_total += \$upc_code[\$i];
} else {
/* Sum odd digits */
\$odd_total += \$upc_code[\$i];
}
}

\$sum = (3 * \$odd_total) + \$even_total;

/* Get the remainder MOD 10*/
\$check_digit = \$sum % 10;

/* If the result is not zero, subtract the result from ten. */
return (\$check_digit > 0) ? 10 - \$check_digit : \$check_digit;
}

echo generate_upc_checkdigit("72438451112");

?>
```

## 2 thoughts to “Generating UPC check digit”

1. Good program i have implemented it and it works fine.

2. Sam Hennessy says:

Thanks for sharing.