Ciao a tutti,
sto generando in PHP l'algoritmo di Luhn per il Check Digit.

Mi trovo bloccato su un pezzettino di codice.

Spiego brevemente (da wikipedia):

codice:
  1. Partendo da destra e spostandosi verso sinistra, moltiplicare per 2 ogni cifra posta in posizione pari
   2. Laddove la moltiplicazione ha dato un risultato a due cifre, sommare le due cifre per ottenerne una sola (es. 18 = 1+8)
   3. Sommare tutte le cifre, sia quelle che si trovano in posizione pari, sia quelle che si trovano in posizione dispari

Ho proprio problemi con il passo 2. Vi metto il mio codice:

codice:
[...]
//VIA CON IL CICLO
        for ($i=0; $i<12; $i++)
        {
                //CONVERTO IL CODICE IN STRINGA ED ESTRAPOLO IN SUCCESSIONE TUTTE LE CIFRE
                $fattore = substr(strval ( $codice ), $i, 1);
               
                //CONTROLLO SE STO PER ELABORARE UNA CIFRA IN POSIZIONE
                //PARI O DISPARI NEL CODE 128
                //SE E' DISPARI (DISPARI PERCHE' LA PRIMA CIFRA A DX E' PROPRIO QUELLA CHE CERCO!) LA SOMMO ALL'ADDENDO
                //SE E' PARI LA MOLTIPLICO PER IL MOLTIPLICATORE
                //SPECIFICATO IN APERTURA
                if (($i % 2) == 1)
                    {
                        $fattore = $fattore *$moltiplicatore;
						
						// SE IL NUMERO E' UNA DECINA, AD ES. 18, ESTRAPOLO LE DUE CIFRE E LE ADDIZIONO -> 1+8
						if ($fattore > 9) {
							
							for ($y=0; $y<2; $y++) {
							
								$cifreSingole = substr(strval ( $fattore ), $y, 1);
								$newFattore = $cifreSingole + $newFattore;
								echo "Newfattore: ".$newFattore;
								
							}
							
						}
							
						
                    }
                $addendo = $addendo + $fattore;
               
        }
[...]
Ma il newFattore mi stampa numeri assurdi sigh....

Grazie!