monotone blog

人生は楽しむためにある!素敵な人生は幸せな毎日から♪ 田舎で気ままに暮らすフリーランスSEの日常を綴るブログ。

IT・コンピュータ 備忘録 独り言

PHPでJANコードのチェックディジットを計算する

投稿日:

先日、JANコード(GTIN-13)を生成する処理を書く機会があったので、チェックディジット(検査数字)取得方法のメモを残しておきます。

JANコードに必要なチェックディジットは「モジュラス10/ウェイト3」と呼ばれるタイプで、下記のように求めるそうです。

1. 偶数桁の数字の総和を算出する
2. (1)の計算結果を3倍する
3. 奇数桁の数字の総和を算出する
4. (2)の計算結果と(3)の計算結果を加算する
5. (4)の計算結果の下1桁の数字を「10」から減算した値を「チェックデジット」とする
6. (4)の計算結果の下1桁が「0」の場合は、チェックデジットは「0」とする

というわけで、PHPだと次のようなコードで取得できます。

function getCheckDigit( $value )
{
	$arr_num = str_split( $value );
	$odd_sum = 0;
	$even_sum = 0;
	for( $i = 0; $i < count( $arr_num ); $i++ ){
		if(( $i + 1 ) % 2 == 0 ){
			$even_sum += intval( $arr_num[$i] );
		}
		else{
			$odd_sum += intval( $arr_num[$i] );
		}
	}
    $check_digit = 10 - intval( substr((string)( $even_sum * 3 ) + $odd_sum, -1 ));
    return $check_digit === 10 ? 0 : $check_digit;
}// getCheckDigit()







-IT・コンピュータ, 備忘録, 独り言

執筆者:

関連記事

no image

複数blogの使い分け

私はここ以外にも複数のブログサイトを持っています。 ここはレンタルサーバーに自分でMovable Typeをインストールして運用しているのですが、他は全て様々な会社の無料サービスを利用しています。(仕 …

no image

雷サージ対応タップで雷対策を万全に

PCを仕事で使う上で、一番怖いのがデータの喪失です。 ハードウェアは壊れても買い替えれば済みますが、データは1度失うと永久に戻ってきません。 うちの場合、HDDのトラブル対策としてRAIDを構築してい …

no image

Movable Type 3.3 日本語版

Movable Type 3.3の正式版が6月27日に出るようです。 タグや管理機能の強化を図った「Movable Type 3.3」日本語版 シックス・アパートは、ブログツール「Movable Ty …

no image

禁煙による経済効果(^^;

最近、禁煙ネタばかりですみません。今しばらくお付き合い下さい(^^; 禁煙によって節約出来るお金について考えてみました。 私はこれまで毎日2~3箱のタバコを吸っていたので、1日2.5箱平均で計算すると …

Apple純正「iPhone 6 レザーケース」購入!

先日、iPhone 6を購入してから、ケースをどうしようかと悩んでたんですが、結局、アップル純正のレーザーケースを購入しました。 Appleがデザインしたこのケースは、上質な手触りのプレミアムレザー製 …