2011-08-30 17 views
0

我有一些文件我想上傳。當我上傳,我想編號00的第一個,第二個編號01.我寫了一個函數來獲取最新的數字,當然,這不是幹活我如何命名我的文件00,01,02等在PHP

$i = 00; 
while($i < $filecount) 
{ 
    if(!file_exists("../photo/$i.jpg")) 
    { 

     return $i; 
     print($i); 
    } 
    else if(file_exists("../photo/$i.jpg")) { 
     $i = $i + 01; 
    } 

但現在,當我上傳文件,它只是數字吧:0,1,2,3

我得到了一些新的代碼:

function getFileNumber() { 
      $i = 0; 
      while ($i < $filecount) { 

       $fn = sprintf("../photo/%02d.jpg", $i); 
       if (!file_exists($fn)) { 

        return $i; 
       } else { 
        $i ++; 
       } 
      } 
     } 

但它每次都返回00,但我想去00,01,02,03。有人有任何想法?

+3

什麼不工作...你得到一個錯誤?給我們更多的信息。 –

+3

你不需要調用'file_exists()'兩次。只需使用'else'而不是'else if' – ComFreek

+1

觀察前導零。 PHP以前導零作爲基數8解釋數字。'$ i = 0;'和'$ i ++;'或'$ i + = 1;'應該這樣做。 –

回答

2

整數文字不包含任何格式。 1是值一個,它不能是「01」,這是一個格式問題。因此,格式你的號碼:

$file = sprintf('%2u.jpg', $i); 
0

退房sprintf(),允許非常靈活格式字符串 - 尤其是檢查出的填充和寬度說明。您正在尋找沿線的

$i = 0; 
while ($i < $filecount) 
{ 
    $fn = sprintf("../photo/%02d.jpg", $i); 
    if (!file_exists($fn)) 
    { 
     return $i; 
    } 
    else { 
     $i++; 
    } 
} 
+0

我編輯了我的代碼,有什麼想法? –

0
  1. print($i)東西是死代碼 - 它永遠不會得到執行
  2. 其次,你不必再次檢查else if(file_exists("../photo/$i.jpg"))
  3. 00是無效的整數,它簡化爲0,爲01簡化爲1(實際上它當作八進制數字,所以0809無效)

所以,能有真正的000102你有你的輸出與spritf

$q=0; 
$file_suffix = sprintf("%02d", $q); 
if(!file_exists("../photo/{$file_suffix}.jpg")){ 
    print($i); 
    return $i; 
} 
else{ 
    $q+=1; 
} 
1

格式可以使用

echo str_pad($i, 2, "0", STR_PAD_LEFT); 

此外,返回後的print()將永遠不會執行並使用if/else而不是if/elseif。

相關問題