如何以php为0的数字迭代循环



我试图用for loop至8位数字迭代0,例如,第一个数字是:00000000,我想显示下一个5个数字。到目前为止,我设法完成了STH。这样:

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

结果:

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 . "rn";
         }
    ?>

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

它不起作用,因为以0开头的数字解释为八十个数字。从PHP文档的整数页面(重点是我的):

整数可以在十进制(基部10),十六进制(基部16), 八分(基数8)或二进制(基数2)表示法,可选为止 符号( - 或 )。

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

要使用八进制符号,请在数字之前使用0(零)。使用 十六进制表示法先于0倍数字。使用二进制 符号先于0b。

简单地使用:

 $start = 50200;

在您的代码开头,一切都应该很好。

您获得其他数字的原因是零领先会使您的数字八分之一。因此,您从设置$start = 00050200;开始,这使$start八进制。

只需删除这些领先的零,代码就可以了。

最新更新