Mailinglisten-Archive |
hoffe mir selbst geholfen zu haben ... ;)
kann sich jemand den alogrithmus anschauen und mir seine meinung dazu
sagen ?
vielleicht findet der eine oder andere noch paar sachen um den code zu
beschleunigen ...
anforderungen waren:
input:
string
länge: 1-50
zeichen [a-z0-9_]
output:
integer
länge: 10
----------------------------------------------
function int_checksum($str)
{
$id = 0;
$prev_c = 0;
$str_len = strlen($str);
for ($i=0; $i<$str_len; $i++)
{
/* value */
$c = ord(substr($str , $i , 1));
/* crossfoot */
$cf = 0;
for ($j=0; $j<strlen($c); $j++)
$cf += substr($c , $j , 1);
/* difference */
$diff = abs($c - $prev_c);
/* multiplying the data */
if ($diff > 0)
$id += ($c * $cf * $diff);
else
$id += ($c * $cf);
$prev_c = $c;
}
return str_pad($id, 10 , '0' , STR_PAD_RIGHT);
}
----------------------------------------------
also, was meint ihr ?
btw, das ding produziert eigentlich nur 7-stellige ids...
--
Kai Meder
kai_(at)_meder.info
php::bar PHP Wiki - Listenarchive