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)
它不起作用,因为以0开头的数字被解释为八进制数.从PHP文档的Integers页面(Emphasis mine):
整数可以用十进制(基数10),十六进制(基数16),八进制(基数8)或二进制(基数2)表示,可选地以符号( - 或+)开头.
从PHP 5.4.0开始,二进制整数文字可用.
要使用八进制表示法,请在数字前面加上0(零).要使用十六进制表示法,请在数字前面加上0x.要使用二进制表示法,请在数字前面加上0b.
只需使用:
$start = 50200;
Run Code Online (Sandbox Code Playgroud)
在代码的开头,一切都应该正常工作.