0

次のような文字列が00030000あり、これをループでインクリメントする必要があります。

$start = "00030000";

for ($i = 1; $i < 10; $i++) {
    echo $i + $start;
}

これを印刷します

30001 
30002 
30003 
30004 
//...

これは理解できますが、次の結果を得るにはどうすればよいですか?

00030001 
00030002 
00030003 
00030004 
//...
4

5 に答える 5

2

を使用して必要な長さにゼロパッドしますstr_pad

$start = "00030000";

for ($i = 1; $i < 10; $i++) {
    $sum = $i + $start;
    echo str_pad($sum, 8, "0", STR_PAD_LEFT);
}

出力:

00030001
00030002
00030003
...
于 2012-08-14T22:20:35.937 に答える
1

楽しみのために:

$start = "00030000";
$start = '_' . $start;

for ($i = 1; $i < 100; $i++) {
    echo ltrim($start++, '_');
    echo "\n";
}

実際にそのコードを使用しないでください。それは完全に機能し、php の文書化された機能を利用していますが、それを読むほとんどの人を当惑させます (それが悪いコードになります)。str_pad() を使用する回答のいずれかを使用します

于 2012-08-14T22:31:28.810 に答える
1

これを取得するには、strpad またはsprintfを使用できます。

$input = "30";
echo str_pad($input, 4, "0", STR_PAD_LEFT);  // produces "0030"
于 2012-08-14T22:22:54.910 に答える
1
$start = "00030000";
$startLen = strlen($start);
for ($i = 1; $i < 10; $i++) {
    echo str_pad($i + $start, $startLen, '0', STR_PAD_LEFT );
}
于 2012-08-14T22:23:54.047 に答える
0
$start = "00030000";
for ($i = 1; $i < 10; $i++) {
    echo sprintf( "%08u\n", $i + $start );
 }
于 2012-08-14T22:35:22.920 に答える