當我輸入帶有零填充的整數佔位符的負參數的printf()時。零填充未應用。帶負數的PHP printf()數字填充
php > printf('%02d', -6);
-6
我做錯了什麼?或者它是一個錯誤?
當我輸入帶有零填充的整數佔位符的負參數的printf()時。零填充未應用。帶負數的PHP printf()數字填充
php > printf('%02d', -6);
-6
我做錯了什麼?或者它是一個錯誤?
每文檔:
墊襯被應用在整個字符串:
一個可選的填充符,說什麼字符將用於填充的結果正確的字符串大小。這可能是空格字符或0(零字符)。默認是填充空格。可以通過用單引號(')作爲前綴來指定備用填充字符。看下面的例子。
(強調我的)。
您可能需要使用標誌符,如果這是可以接受的,例如:
php > printf('%+03d', -6);
-06
php > printf('%+03d', 6);
+06
完美,謝謝!我今天肯定已經閱讀了20次這個確切的文檔,但那個粗體的單詞是我所需要的。 – 2012-02-24 01:13:06
從技術上講,這是正確的,因爲您指定了2位數字,而減號指定了其中一個數字。如果你使用
printf('%03d', -6);
你會得到-06。
的「 - 」計爲一個字符,所以你需要使用%03D。
我不認爲這是一個bug,因爲在字段中使用具有設置長度的字段時經常使用0填充,所以如果%02d生成一個包含3個字符的數字,天空可能會下降。
你期待什麼? '-06'? – Borealid 2012-02-24 00:56:18
什麼是02表示填充'0'到長度'2',所以試試這個代替 'printf('x'<0)?' - ':'',abs( $ x));' – scibuff 2012-02-24 01:01:00