Modulus-10

PHP

3 svar · 746 visningar · startad av greyhound

Medlem sedan maj 20031 472 inlägg
Trådstart#1

Jag håller på att skriva en funktion i PHP som genererar en fil till Posten.
Dokumentet som ska följas heter IG_Transportinstruktion_Flatfil2_1.39.pdf och finns att ladda ner på adressen: http://www.posten.se/img/cmt/FriStorlek/transportinstruktion.zip

På ett ställe där står det att jag ska skriva en "Checksiffra modulus-10 för belopp i ören.". Hur jag än gör lyckas jag inte lösa detta. Jag testade en funktion som jag hittade men den stämde vad jag vet.

Någon som har några tips?

Medlem sedan feb. 20022 594 inlägg
#2

Mod 10 innebär väl i det sammanhanget inget annat än ett heltal 0 >= x <= 9? Var du sen ska få checksiffran ifrån eller om det är din att godtyckligt sätta vet jag inte.

Medlem sedan juni 20008 205 inlägg
#3

Är det den här algoritmen du tänker på? http://en.wikipedia.org/wiki/Luhn_algorithm

Medlem sedan maj 20031 472 inlägg
#4

Det slutade med att jag fick göra en egen funktion, mest bara för att jag skulle förstå hur det funkade.

Jag fick ett svar från posten som sa att de använde samma sätt att räkna ut checksiffran som Bankgirot och skulle därför fråga de om hur man räknade ut den. Som tur var hittade jag denna http://www.bgc.se/upload/Gemensamt/Trycksaker/Manualer/10-MODUL.pdf som förklarade allt på ett mycket lätt och bra sätt.

Min funktion:

function mod10check($value) {
  $value = strrev($value);
  $base = 2;
  $sum = 0;
  for ($i = 0; $i <= strlen($value) - 1; $i++) {
    $prod = $value{$i} *  $base;
    if ($prod > 9) {
      $sum = $sum + 1 + $prod % 10;
    } else {
      $sum = $sum + $prod;
    }
    if ($base == 1) {
      $base = 2;
    } else {
      $base = 1;
    }
  }
  return (ceil($sum/10) * 10) - $sum;
}
259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)