【问题标题】:List files and folders into an array [closed]将文件和文件夹列表到数组中[关闭]
【发布时间】:2013-06-14 03:50:51
【问题描述】:

我正在尝试将所有子目录中的所有文件列出到一个多维数组中。

例如:

文件结构

  • 根目录/index.php
  • 根目录/folder1/a.jpg
  • 根目录/folder1/b.jpg
  • 根目录/folder1/c.mov
  • 根目录/folder2/aa.jpg
  • 根目录/folder2/bb.jpg
  • 根目录/folder2/cc.mov

我正在尝试获取这样的数组()...

$list = array(

     array(
            'type' => 'image',
            'folder'=> 'folder1',
            'imgs' => array('a.jpg', 'b.jpg')
     ),

     array(
            'type' => 'video',
            'folder'=> 'folder1',
            'video' => 'c.mov'
     ),

    array(
            'type' => 'image',
            'folder'=> 'folder2',
            'imgs' => array('aa.jpg', 'bb.jpg')
     ),

     array(
            'type' => 'video',
            'folder'=> 'folder2',
            'video' => 'cc.mov'
     ),

)

【问题讨论】:

  • 你的编程问题是?

标签: php arrays directory subdirectory


【解决方案1】:

我猜你可能会使用 Scandir 函数来列出文件和文件夹以及特定目录。使用下面的递归函数,你可以得到你的结果。

function listAllFolderFiles($dir){
    $ffs = scandir($dir);
    echo '<ol>';
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            echo '<li>'.$ff;
            if(is_dir($dir.'/'.$ff)) listAllFolderFiles($dir.'/'.$ff);
            echo '</li>';
        }
    }
    echo '</ol>';
}

listAllFolderFiles('Your main dir');

【讨论】:

  • 你的最后一行有错误。它应该是listAllFolderFiles('Your main dir');,而不是listFolderFiles('Your main dir'); - 否则,它将对未定义的函数产生错误。
  • 哦抱歉我刚刚更新了..
  • 干得好 Liyakat ;-)
  • 是的,或者我们也可以用css来管理,效果很好。
  • 没错。当然,美化事物的方法通常不止一种。
【解决方案2】:

你可以使用 RecursiveIterator,来创建一个多维数组......

 $path = realpath('Root/');
 $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST); 

 $yourArray = array(); 

 foreach ($it as $FileInfo) { 
   $path = $FileInfo->isDir() 
     ? array($FileInfo->getFilename() => array()) 
     : array($FileInfo->getFilename()); 

  for ($depth = $it->getDepth() - 1; $depth >= 0; $depth--) { 
   $path = array($it->getSubIterator($depth)->current()->getFilename() => $path); 
  } 
 $yourArray = array_merge_recursive($yourArray, $path); 
 } 

 print_r($yourArray); 

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多