2012-08-02 16 views
2

我試圖使用printf進行格式化,但是我意識到當我使用%d時,我無法使用0作爲填充說明符與-對齊。這是我想要做的事情:使用php和整數值的printf格式化

$a = sprintf("%04d",5); 
    $b = sprintf("%'1-4d",5); 
    $c = sprintf("%0-4d",5); 
    $d = sprintf("%0-4s",5); 

    var_dump($a);//outputs 0005 

    var_dump($b);//outputs 5111 

    var_dump($c);//outputs 5(and 4 spaces) why not 5000? 

    var_dump($d);//outputs 5000 

回答

0

我認爲PHP試圖在這裏爲你思考。

如果您右鍵點擊5並輸入四個0個字符,您將如何區分這和50000?或者在5之間填充四個0字符和50填充三個0字符?

我沒有PHP的方便測試,但如果你試圖使用格式"%'0-4d"說服它做你想做的?

+0

我也喜歡這個,但爲什麼它允許5111?我也嘗試%'0-4d,它也輸出5. – draconis 2012-08-03 00:08:54

+0

我猜想它允許'5111',因爲它只是將'1'視爲填充字符,但'0'具有某種語義含義。我認爲這可能是時候[提交一份針對php的bug報告](https://bugs.php.net/)。 – 2012-08-03 00:22:13