41 lines
640 B
PHP
41 lines
640 B
PHP
<?php
|
|
|
|
function char2value($c)
|
|
{
|
|
assert(stripos('AEIOU', $c) === FALSE);
|
|
return intval($c, 36);
|
|
}
|
|
|
|
$sedolweight = array(1, 3, 1, 7, 3, 9);
|
|
|
|
function checksum($sedol)
|
|
{
|
|
global $sedolweight;
|
|
$tmp = array_sum(
|
|
array_map(
|
|
function ($ch, $weight) {
|
|
return char2value($ch) * $weight;
|
|
},
|
|
str_split($sedol),
|
|
$sedolweight
|
|
)
|
|
);
|
|
return strval((10 - ($tmp % 10)) % 10);
|
|
}
|
|
|
|
foreach (
|
|
array(
|
|
'710889',
|
|
'B0YBKJ',
|
|
'406566',
|
|
'B0YBLH',
|
|
'228276',
|
|
'B0YBKL',
|
|
'557910',
|
|
'B0YBKR',
|
|
'585284',
|
|
'B0YBKT',
|
|
'B00030'
|
|
) as $sedol
|
|
)
|
|
echo $sedol, checksum($sedol), "\n";
|