2013-08-03 49 views
4

此代碼:爲什麼sprintf給出星號而不是我格式化的字符串?

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 

世界上有什麼?

+0

您使用的是什麼版本的PHP(如果可以的話,可以下載到補丁版本)? –

+0

5.3.2,不知道如何獲得修補程序版本 – JustinY17

+0

'PHPINFO();'會顯示到補丁 – DevlshOne

回答

2

此問題實際上是由於數字序列與Luhn算法匹配導致的,並且在我的PCI環境中被屏蔽。我手動排除了測試中的文件,現在一切都按預期工作。

0

即使PHP 5.3.20(cli)(內置:2012年12月20日06:20:32)無法重現此錯誤,因此升級到5.4可能不是必需的。

相關問題