3

私はprintf、sprintfについて勉強していますが、いくつかの点がわかりませんでした。誰かがこの点を理解するのを手伝ってくれませんか。

PHPマニュアルのこのリンクで:

説明には1から6までの番号が付けられています。

私が理解していなかったのは、最初と2番目(1(記号指定子)、2(パディング指定子))です。誰かが例を挙げてくれたら、私はとても感謝しています。

4

4 に答える 4

30

sprintf()は文字列を返し、printf()はそれを表示します。

次の2つは同じです。

printf(currentDateTime());
print sprintf(currentDateTime());
于 2012-06-10T14:14:01.987 に答える
12

符号指定子は、たとえそれが正であっても、符号を強制します。だから、あなたが持っているなら

$x = 10;
$y = -10;
printf("%+d", $x);
printf("%+d", $y);

あなたが得るでしょう:

+10
-10

パディング指定子は左パディングを追加して、出力が常に設定された数のスペースを取るようにします。これにより、数値のスタックを整列させることができ、合計などのレポートを生成するときに役立ちます。

 $x = 1;
 $y = 10;
 $z = 100;
 printf("%3d\n", $x);
 printf("%3d\n", $y);
 printf("%3d\n", $z);

あなたが得るでしょう:

   1
  10
 100

パディング指定子の前にゼロを付けると、文字列はスペースパディングではなくゼロパディングされます。

 $x = 1;
 $y = 10;
 $z = 100;
 printf("%03d\n", $x);
 printf("%03d\n", $y);
 printf("%03d\n", $z);

与える:

 001
 010
 100
于 2012-06-10T14:24:38.517 に答える
2

符号指定子:プラス記号(+)を配置すると、負の符号と正の符号が強制的に表示されます(デフォルトでは負の値のみが指定されています)。

$n = 1;

$format = 'With sign %+d  without %d';
printf($format, $n, $n);

プリント:

記号+1あり1なし

パディング指定子は、指定された長さに結果をパディングするために使用される文字を示します。文字は、前に一重引用符(')を付けることによって指定されます。たとえば、文字「a」で長さ3にパディングするには、次のようにします。

$n = 1;

$format = "Padded with 'a' %'a3d"; printf($format, $n, $n);
printf($format, $n, $n);

プリント:

'a'aa1で埋められます

于 2012-06-10T14:34:11.437 に答える
0

1.符号指定子:

デフォルトでは、ブラウザ-は負の数の前にのみ記号を表示します。+正の数の前の記号は省略されています。+ただし、符号指定子を使用して、正の数の前に符号を表示するようにブラウザに指示することは可能です。例えば:

$num1=10;
$num2=-10;
$output=sprintf("%d",$num1);
echo "$output<br>";
$output=sprintf("%d",$num2);
echo "$output";

出力:

10
-10

ここでは+、正の数の前の記号は省略されています。ただし、の文字の+後に記号を付けると、省略は発生しなくなります。%%d

$num1=10;
$num2=-10;
$output=sprintf("%+d",$num1);
echo "$output<br>";
$output=sprintf("%+d",$num2);
echo "$output";

出力:

+10
-10

2.パディング指定子:

パディング指定子は、出力の左側または右側に特定の数の文字を追加します。文字は、空のスペース、ゼロ、またはその他のASCII文字にすることができます。

例えば、

$str="hello";
$output=sprintf("[%10s]",$str);
echo $output;

ソースコード出力:

[     hello]             //Total length of 10 positions,first five being empty spaces and remaining five being "hello"

HTML出力:

 [ hello]                 //HTML displays only one empty space and collapses the rest, you have to use the <pre>...</pre> tag in the code for HTML to preserve the empty spaces.

負の符号を左に置くと、出力が正当化されます。

$output=["%-10s",$string];
echo $output;

ソースコード出力:

[hello     ]

HTML出力:

[hello ]

0記号の後に置くと、%空のスペースがゼロに置き換えられます。

$str="hello";
$output=sprintf("[%010s]",$str);
echo $output;

出力:

[00000hello]

左揃え

$output=sprintf("[%-010s]",$str);

出力:

[hello00000]

afterのように'ASCII文字を続けて入力すると、空のスペースではなくそのASCII文字が表示されます。*%

$str="hello";
$output=sprintf("[%'*10s]",$str);
echo $output;

出力:

*****hello

左揃え:

$output=sprintf("[%-'*10s]",$str);
echo $output;

出力:

hello*****
于 2017-07-04T21:51:07.090 に答える