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

时间:2016-12-01 14:20:22

标签: php loops for-loop iteration

我试图用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";
     }
?>

结果:

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

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

<?php

         $start = 00050200;
         $number = 5;

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

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

虽然我期待:

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

2 个答案:

答案 0 :(得分:9)

它不起作用,因为以0开头的数字被解释为八进制数。来自Integers page of the PHP Documentation(强调我的):

  

整数可以用十进制(基数10),十六进制(基数16)指定,   八进制(基数8)或二进制(基数2)表示法,可选地以a开头   标志( - 或+)。

     

自PHP 5.4.0起可以使用二进制整数文字。

     

要使用八进制表示法,请在数字前面加上0(零)。使用   十六进制表示法在数字前面加上0x。要使用二进制   符号前面带有0b的数字。

只需使用:

 $start = 50200;

在代码的开头,一切都应该正常。

答案 1 :(得分:2)

你获得其他数字的原因是前导零使你的数字成为八进制。因此,您首先设置$start = 00050200;,这会使$start八进制。

只需删除这些前导零,代码就可以了。