如何在PHP中以0开头的数字循环for循环?

Pet*_*ter 5 php iteration loops for-loop

我试图for loop通过从0开始的8位数字进行迭代.例如,第一个数字是:00000000我想显示接下来的5个数字.到目前为止,我设法完成某事.像那样:

<?php

     $start = 00000000;
     $number = 5;

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

结果:

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
Run Code Online (Sandbox Code Playgroud)

这个例子一切都很好,然而,问题始于这样一个例子:

<?php

         $start = 00050200;
         $number = 5;

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

for循环产生:

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
Run Code Online (Sandbox Code Playgroud)

虽然我期待:

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
Run Code Online (Sandbox Code Playgroud)

rob*_*o06 9

它不起作用,因为以0开头的数字被解释为八进制数.从PHP文档Integers页面(Emphasis mine):

整数可以用十进制(基数10),十六进制(基数16),八进制(基数8)或二进制(基数2)表示,可选地以符号( - 或+)开头.

从PHP 5.4.0开始,二进制整数文字可用.

要使用八进制表示法,请在数字前面加上0(零).要使用十六进制表示法,请在数字前面加上0x.要使用二进制表示法,请在数字前面加上0b.

只需使用:

 $start = 50200;
Run Code Online (Sandbox Code Playgroud)

在代码的开头,一切都应该正常工作.