2012-02-24 10 views
1

ゼロ埋め込みの整数プレースホルダに対して負のパラメータを指定してprintf()を入力すると、ゼロ埋め込みは適用されません。負の数値を持つPHPのprintf()桁埋め込み

php > printf('%02d', -6); 
-6 

私は何か間違っていますか?それともバグですか?

+1

あなたは何を期待しましたか? '-06'? – Borealid

+0

02は、長さ '2'まで '0'で塗りつぶされているので、代わりにこれを試してください 'printf( '%s%02d'、($ x <0)? ' - ': ''、abs( $ x)); ' – scibuff

答えて

3

パディングは、文字列全体に適用されます。

オプションのパディング指定子文字がに結果をパディングするために使用されるものを言います右文字列サイズ。これは空白文字または0(ゼロ文字)です。デフォルトではスペースで埋められます。別のパディング文字は、その前に単一引用符( ')を付けることで指定できます。以下の例を参照してください。

(強調鉱山)。

あなたは例えば、それが許容可能である場合、符号指定子を使用することをお勧めします。:

php > printf('%+03d', -6); 
-06 
php > printf('%+03d', 6); 
+06 
+0

パーフェクト、ありがとう!私は今日、その文書の正確なラインを20回読んでいたに違いないが、その1つの太字の言葉は私が必要としていたものだ。 –

1

技術的には、2桁の数字を指定しており、マイナス記号の1つが原因です。あなたが使用する場合

printf('%03d', -6); 

あなたは-06を得ます。ドキュメント毎の

1

ザ・「 - 」あなたは%03Dを使用する必要があるので、文字としてカウントし、。

文字のように長さが設定されたフィールドで作業するときに0パディングがよく使われるため、バグだとは思わないので、%02dが3文字の数字を生成すると空が落ちる可能性があります。

関連する問題