相关疑难解决方法(0)

生成Luhn校验和

验证Luhn校验和有很多实现,但很少用于生成它们.我遇到过这个,但是在我的测试中它发现它是错误的,我不理解delta变量背后的逻辑.

我已经创建了这个应该生成Luhn校验和的函数,但由于某些原因我还没有理解生成的校验和在一半时间内是无效的.

function Luhn($number, $iterations = 1)
{
    while ($iterations-- >= 1)
    {
        $stack = 0;
        $parity = strlen($number) % 2;
        $number = str_split($number, 1);

        foreach ($number as $key => $value)
        {
            if ($key % 2 == $parity)
            {
                $value *= 2;

                if ($value > 9)
                {
                    $value -= 9;
                }
            }

            $stack += $value;
        }

        $stack = 10 - $stack % 10;

        if ($stack == 10)
        {
            $stack = 0;
        }

        $number[] = $stack;
    }

    return implode('', …
Run Code Online (Sandbox Code Playgroud)

php algorithm checksum check-digit luhn

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

algorithm ×1

check-digit ×1

checksum ×1

luhn ×1

php ×1