2012-09-09 52 views
1

如何將每個文件名放在根目錄下,並將每個子文件夾中的所有文件名放入php中的數組中?如何把所有的文件名在php數組中

+8

關於閱讀的文檔是什麼?如何使用Google提出建議?這個論壇不是讓別人做你的功課。首先嚐試自己解決問題,如果你真的被卡住了,那麼_then_是在這裏寫一個問題的時候。一個很好的問題,包含你在那之前所做的嘗試,代碼,問題描述等等。 – arkascha

回答

1

看一看glob() [並給予慰問你的RAM的方式,如果你真的想脫脂所有文件。

4

使用scandir(),你會發現一個遞歸函數的子目錄以及噸的其他例子,以實現你想要的。

1

這就是我的做法。

/** 
    Recursively returns all the items in the given directory alphabetically as keys in an array, optionally in descending order. 
    If a key has an array value it's a directory and its items are in the array in the same manner. 
*/ 
function scandir_tree($directory_name, $sort_order = SCANDIR_SORT_ASCENDING, $_recursed = false) 
    { 
    if (!$_recursed || is_dir($directory_name)) 
     { 
     $items = array_diff(scandir($directory_name, (int) $sort_order), ['.', '..']); 
     $tree = []; 
     foreach ($items as $item) 
      { 
      $tree[$item] = scandir_tree($directory_name . $item, $sort_order, true); 
      } 
     return $tree; 
     } 
    return $directory_name; 
    } 
1

試試這個:

$ar=array(); 
$g=scandir('..'); 
foreach($g as $x) 
{ 
    if(is_dir($x))$ar[$x]=scandir($x); 
    else $ar[]=$x; 
} 
print_r($ar); 
2

我一直喜歡DirectoryIteratorRecursiveDirectoryIterator

下面是一個例子:

function drawArray(DirectoryIterator $directory) 
{ 
    $result=array(); 
    foreach($directory as $object) 
    { 
     if($object->isDir()&&!$object->isDot()) 
     { 
      $result[$object->getFilename()]=drawArray(new DirectoryIterator($object->getPathname())); 
     } 
     else if($object->isFile()) 
     { 
      $result[]=$object->getFilename(); 
     } 
    } 
    return $result; 
} 
$array=drawArray(new DirectoryIterator('/path')); 
print_r($array); 
+0

這是一個使用SPL的好建議。推薦的! – 2012-09-09 15:42:12

相關問題