4

这段代码:

    function atest(){
    $test = array(
        "StartDate" => "08/01/2013", 
        "StartTime" =>"08:00:00", 
        "DepartmentID" => "75275", 
        "# Contacts Offered" => "3", 
        "# Contacts Handled" => "4", 
        "Average Talk Time" => "491.250000", 
        "Average Delay" => "5.666667", 
        "Percent SLA" => "1.333333");

    $formatted = sprintf("%s   %s TCSDATA %d %d %d %01.2f 0 %01.2f %01.2f 0\r\n", 
        $test["StartDate"],
        $test["StartTime"],
        $test['DepartmentID'],
        $test['# Contacts Offered'],
        $test['# Contacts Handled'],
        $test['Average Talk Time'],
        $test['Average Delay'],
        $test['Percent SLA']
    );

    echo('<pre>');
    echo( var_dump($test) );
    echo('</pre>');             

    echo $formatted;
}

打印这个:

08/01/2013 08:00:00 TCSDATA 75275 ************************

但是,如果我修改 sprintf 格式以删除最后一个 0 :

"%s   %s TCSDATA %d %d %d %01.2f 0 %01.2f %01.2f \r\n"

我明白了:

08/01/2013 08:00:00 TCSDATA 75275 3 4 491.25 0 5.67 1.33

世界上有什么?

4

2 回答 2

2

这个问题实际上是因为数字序列与 Luhn 算法匹配,并且在我的 PCI 环境中被屏蔽了。我手动从测试中排除了该文件,现在一切都按预期工作。

于 2013-11-01T04:26:05.910 回答
0

即使是 PHP 5.3.20 (cli)(构建时间:2012 年 12 月 20 日 06:20:32)也无法重现此错误,因此可能不需要升级到 5.4。

于 2013-08-16T10:59:47.227 回答