优化PHP脚本以生成IBAN

时间:2014-01-16 13:21:42

标签: php iban

我在PHP中编写了函数,为给定的银行帐户生成克罗地亚IBAN。我可以轻松地重写以返回任何IBAN。问题是我认为它没有优化也没有优雅。这是功能:

function IBAN_generator($acc){

    if(strlen($acc)!=23)
        return;
    $temp_str=substr($acc,0,3);
    $remainder =$temp_str % 97;
    for($i=3;$i<=22;$i++)
    {
        $remainder =$remainder .substr($acc,$i,1);
        $remainder  = $remainder  % 97;
    }
    $con_num = 98 - $remainder;
    if ($con_num<10)
    {
        $con_num="0".$con_num;
    }
    $IBAN="HR".$con_num.substr($acc,0,17);
    return $IBAN;
} 

有更好的方法来生成IBAN吗?

2 个答案:

答案 0 :(得分:1)

乍一看,似乎你不能让它更快,它只是简单的字符串追加序列。 除非你必须使用它数千次,这代表了你的应用程序的瓶颈,我不会浪费时间让它变得更好,它可能需要几微秒,而只是升级PHP版本可能会比代码更改更好地改进你实施了。

如果你真的必须加快速度,可能的解决方案就是 - 将函数写入扩展名 - APC操作码缓存(在解释代码时通常会使事情变得很快,因此全局提高速度) - 缓存结果在内存中(仅当您的应用程序多次运行相同的输入时,这可能不是像这样的简单算法的常见情况)

如果你想玩它并试着让它变得更快,小心,你可以改变逻辑并引入一个bug。始终使用单元测试,或在更改之前编写一些测试用例,这总是一个好的做法

答案 1 :(得分:0)

你可能会看一下这个回购:

https://github.com/jschaedl/Iban

您需要添加克罗地亚的规则。 之后,您应该可以将它用于您的国家。

格尔茨