2016-12-01 90 views
5

0 ile başlayan 8 basamaklı sayılar ile for loop ile yinelemeye çalışıyorum. Örneğin, ilk sayı: 00000000 ve sonraki 5 sayıyı görüntülemek istiyorum. Şimdiye kadar başardım sth. Böyle:PHP'de 0'dan başlayarak sayılar üzerinden döngü için nasıl yineleme yapılır?

<?php 

    $start = 00000000; 
    $number = 5; 

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

Sonuç:

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 

Ancak sorunlar böyle bir örnekle başlayalım ince her şey bu örnekle var:

<?php 

     $start = 00050200; 
     $number = 5; 

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

döngü üretir:

Beklerken,
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'de '0' ile başlayan sayılar sekizliktir. –

+2

Sprintf sizin için biçimlendirmeyi yaptığından sadece başlangıç ​​$ start = 0. – markdwhite

cevap

9

Bu, 0 ile başlayan sayılar sekizlik sayılar olarak yorumlandığından işe yaramıyor. Integers page of the PHP Documentation (Vurgu maden) kaynaktan:

ondalık (10 tabanı), onaltılı (baz 16), sekizlik (baz 8) ya da ikili (taban 2) gösterimde belirtilebilir Tamsayılar

, isteğe bağlı olarak bir öncesinde

işareti (- veya +).

İkili tamsayı hazırları PHP 5.4.0'dan beri kullanılabilir.

Sekizli gösterimi kullanmak için, 0 (sıfır) numaralı numaradan önce. onaltılık notasyonu kullanmak için numarayı 0x ile girin. İkili notasyonunu kullanmak için numarayı 0b ile önceden girin.

kullanmanız yeterlidir:

$start = 50200; 

kodunuzun ve her şeyin başında iyi çalışması gerekir.

2

Başka numaralar almanızın sebebi, baştaki sıfırın numaranızı sekizlik yapmasıdır. Yani $start = 00050200; ayarlayarak başlarsınız, bu $start sekizlik yapar.

Sadece bu önde gelen sıfırları kaldırın ve kod iyi olacak.