2015-02-08 28 views
0

我有一個目錄有兩個文件,我想將文件名存儲到數組中,當我打開目錄和托盤來存儲文件名時,我正在創建兩個數組, one [0] => may.log和second [0] => may.log,[1] => april.log。海爾是我的代碼:如何從目錄中存儲文件名php

<?php  
     $dir = 'data'; 
     $fileNames = array(); 
     if(is_dir($dir)){ 
      $handle = opendir($dir); 
      while(false !== ($file = readdir($handle))){ 
       if(is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){ 
         $fileNames[] = $file; 
         $fileNames = array_reverse($fileNames); 
         print_r($fileNames); 

       } 
      } 
      closedir($handle); 
     }else { 
      echo "<p>There is an directory read issue</p>"; 
     } 
    ?> 
+3

使用例如水珠'$ files = glob(「data /*.*」);'你們都有一個數組! (見:http://php.net/manual/en/function.glob.php) – Rizier123 2015-02-08 09:51:29

+0

@ Rizier123從來沒有嘗試過,但不應該是'glob(「data/*」)'?文件名不必包含擴展名,即使他們這樣做,'*'仍然應該匹配整個名稱,對吧? – 2015-02-08 10:05:11

+0

@still_learning unix你是對的,但'*'也會匹配文件夾。有效的文件(在Windows中)有一個擴展名。所以''。*'理論上只會返回文件,而不是文件和文件夾。 (假設所有的文件都有一個擴展名,如果他們被提供下載,他們最有可能擁有這個擴展名)。即使服務器是unix,我從來沒有看到任何人刪除像.pdf,.zip這樣的擴展名,只是因爲它們不是必需的*。 – dognose 2015-02-08 10:08:20

回答

2
  1. 搬出array_reverseprint_r從環

    $dir = 'data'; 
    $fileNames = array(); 
    if(is_dir($dir)){ 
        $handle = opendir($dir); 
        while(false !== ($file = readdir($handle))){ 
         if(is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){ 
           $fileNames[] = $file; 
         } 
        } 
        closedir($handle); 
        $fileNames = array_reverse($fileNames); 
        print_r($fileNames); 
    }else { 
        echo "<p>There is an directory read issue</p>"; 
    } 
    
  2. 替換此代碼與水珠(如@Rizier說)

+0

謝謝Sectus的幫助,我移動了array_reverse和print_r,現在我只有一個數組,再次感謝:)。 – user3528790 2015-02-08 11:26:25

相關問題