Php 将文件和文件夹列成一个数组
我试图将所有子目录中的所有文件都列成多维数组 例如: 文件结构Php 将文件和文件夹列成一个数组,php,arrays,directory,subdirectory,Php,Arrays,Directory,Subdirectory,我试图将所有子目录中的所有文件都列成多维数组 例如: 文件结构 Root/index.php Root/folder1/a.jpg Root/folder1/b.jpg 根/文件夹1/c.mov Root/folder2/aa.jpg Root/folder2/bb.jpg 根目录/文件夹2/cc.mov 我正试图得到这样一个数组() $list = array( array( 'type' => 'image', 'fold
- Root/index.php
- Root/folder1/a.jpg
- Root/folder1/b.jpg
- 根/文件夹1/c.mov
- Root/folder2/aa.jpg
- Root/folder2/bb.jpg
- 根目录/文件夹2/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'
),
)
我猜您可能会使用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($dir){
$ffs=斯堪的纳维亚($dir);
回声';
foreach($ffs作为$ff){
如果($ff!='.&&$ff!='.')){
回音“”。$ff;
if(is_dir($dir./'.$ff))listAllFolderFiles($dir./'.$ff);
回音“ ”;
}
}
回声';
}
listAllFolderFiles(“您的主目录”);
您可以使用递归迭代器创建多维数组
$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);
你的最后一行有个错误。它应该是
listAllFolderFiles(“您的主目录”)代码>,而不是listFolderFiles(“您的主目录”)代码>-否则,它将对未定义的函数产生错误。哦,抱歉,我刚刚更新了..干得好,Liyakat;-)是的,或者我们也可以使用css来提供良好的效果。当然,通常有不止一种方式来美化事物。而你的编程问题是?