2014-09-04 87 views
0

爲希望能夠上傳文件到其服務器(具有特定命名)的客戶端建立站點,並讓他們解析站點內容。我得到它的第一個初始文件夾的工作很好,但我很難導出子文件夾文件是他們自己的數組。代碼如下: Scandir子文件夾問題,通過文件夾和文件循環到單獨的陣列中

 
    $files = scandir(getcwd()); 
    foreach ($files as $file) { 
     if(is_file($file)) { 
      if ($file == 'description.txt') { 
       // php less than or equal 5 
       $description = file_get_contents('./description.txt', FILE_USE_INCLUDE_PATH); 
      } 
      if ($file == 'subtitle.txt') { 
       // php less than or equal 5 
       $subtitle = file_get_contents('./subtitle.txt', FILE_USE_INCLUDE_PATH); 
      } 
      if ($file == 'item.png') { 
       $mainImage = 'item.png'; 
      } 
      if ($file == 'item.jpg') { 
       $mainImage = 'item.jpg'; 
      } 
     } elseif (is_dir($file)) { 
      $subFiles = scandir($file); 
      foreach ($subFiles as $file2) { 
       echo $file2; 
      } 
     } 
    } 

問題是$ file2包含父目錄中的所有文件,而不僅僅是子文件夾中的項目。如果我在foreach之前回顯$文件,它還會包含子文件夾和子文件夾文件,這些文件不是最好的,但並不妨礙我想要做的任何事情。謝謝

回答

0

Scandir也返回「。」和「..」,它們也是dirs,所以你的其他部分代碼if(is_file($ file)){也在執行中。檢查並跳過「。」和「..」while while循環將解決問題

$files = scandir(getcwd()); 
foreach ($files as $file) { 
    if(is_file($file)) { 
     if ($file == 'description.txt') { 
      // php less than or equal 5 
      $description = file_get_contents('./description.txt', FILE_USE_INCLUDE_PATH); 
     } 
     if ($file == 'subtitle.txt') { 
      // php less than or equal 5 
      $subtitle = file_get_contents('./subtitle.txt', FILE_USE_INCLUDE_PATH); 
     } 
     if ($file == 'item.png') { 
      $mainImage = 'item.png'; 
     } 
     if ($file == 'item.jpg') { 
      $mainImage = 'item.jpg'; 
     } 
    } elseif (is_dir($file)) { 
     if($file=="." || $file==".."){ 
      continue; 
     } 
     $subFiles = scandir($file); 
     foreach ($subFiles as $file2) { 
      echo $file2; 
     } 
    } 
} 
相關問題