2016-12-01 7 views
5

for loopを0から始まる8桁の数字まで繰り返してみようとしています。たとえば、最初の数字は00000000です。次の5つの数字を表示したいと思います。 これまでのところ私はsthを達成することができました。PHPで0から始まるforループを反復するには?

<?php 

    $start = 00000000; 
    $number = 5; 

    for ($i = $start; $i < $start + $number; $i++) { 
     $url = sprintf("http://test.com/id/%08d", $i); 
     echo $url . "\r\n"; 
    } 
?> 

結果:そのような

http://test.com/id/00000000 
http://test.com/id/00000001 
http://test.com/id/00000002 
http://test.com/id/00000003 
http://test.com/id/00000004 

この例で微すべてがあります、しかし、問題は、このような例から始め:forループ

<?php 

     $start = 00050200; 
     $number = 5; 

     for ($i = $start; $i < $start + $number; $i++) { 
      $url = sprintf("http://test.com/id/%08d", $i); 
      echo $url . "\r\n"; 
     } 
    ?> 

ザ・が生成します。

http://test.com/id/00020608 
http://test.com/id/00020609 
http://test.com/id/00020610 
http://test.com/id/00020611 
http://test.com/id/00020612 

私は期待しています:

http://test.com/id/00050200 
http://test.com/id/00050201 
http://test.com/id/00050202 
http://test.com/id/00050203 
http://test.com/id/00050204 
+5

PHPでは、「0」で始まる数字は8進数です。 –

+2

sprintfがあなたのためにフォーマットをしているので、ちょうど$ start = 0を初期化してください。 – markdwhite

答えて

9

0で始まる数字は8進数として解釈されるため、機能しません。 Integers page of the PHP Documentation(強調鉱山)から:

進(ベース10)、進(ベース16)、 進(ベース8)またはバイナリ(ベース2)表記で指定することができる整数

は、必要に応じて が先行

記号( - または+)。

バイナリ整数リテラルは、PHP 5.4.0以降で使用できます。

8進表記を使用するには、番号の前に0()を付けます。 の16進表記を使用するには、番号の前に0xを付けます。バイナリ を使用するには、0bの前に表記法を付けます。

は単純に使用します。

$start = 50200; 

あなたのコードとすべての開始時に正常に動作する必要があります。

2

あなたが他の数字を得る理由は、先行ゼロがあなたの数字を8進数にすることです。したがって、$start = 00050200;を設定することから始めると、$startは8進数になります。

これらの先頭のゼロを削除すれば、コードは問題ありません。

関連する問題