Adr*_* M. 130 php get list subdirectory
如何在没有文件.(当前目录)或..(父目录)的情况下获取给定目录的所有子目录,然后使用函数中的每个目录?
gho*_*g74 199
你可以使用glob()和GLOB_ONLYDIR选项
要么
$dirs = array_filter(glob('*'), 'is_dir');
print_r( $dirs);
Run Code Online (Sandbox Code Playgroud)
Cor*_*eus 144
以下是如何使用GLOB仅检索目录:
$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
Run Code Online (Sandbox Code Playgroud)
stl*_*loc 37
Spl DirectoryIterator类提供了一个用于查看文件系统目录内容的简单界面.
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
echo $fileinfo->getFilename().'<br>';
}
}
Run Code Online (Sandbox Code Playgroud)
Gor*_*don 25
与上一个问题几乎相同:
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($yourStartingPath),
RecursiveIteratorIterator::SELF_FIRST);
foreach($iterator as $file) {
if($file->isDir()) {
echo strtoupper($file->getRealpath()), PHP_EOL;
}
}
Run Code Online (Sandbox Code Playgroud)
替换strtoupper为您想要的功能.
在数组中:
function expandDirectoriesMatrix($base_dir, $level = 0) {
$directories = array();
foreach(scandir($base_dir) as $file) {
if($file == '.' || $file == '..') continue;
$dir = $base_dir.DIRECTORY_SEPARATOR.$file;
if(is_dir($dir)) {
$directories[]= array(
'level' => $level
'name' => $file,
'path' => $dir,
'children' => expandDirectoriesMatrix($dir, $level +1)
);
}
}
return $directories;
}
Run Code Online (Sandbox Code Playgroud)
//使用权:
$dir = '/var/www/';
$directories = expandDirectoriesMatrix($dir);
echo $directories[0]['level'] // 0
echo $directories[0]['name'] // pathA
echo $directories[0]['path'] // /var/www/pathA
echo $directories[0]['children'][0]['name'] // subPathA1
echo $directories[0]['children'][0]['level'] // 1
echo $directories[0]['children'][1]['name'] // subPathA2
echo $directories[0]['children'][1]['level'] // 1
Run Code Online (Sandbox Code Playgroud)
显示所有示例:
function showDirectories($list, $parent = array())
{
foreach ($list as $directory){
$parent_name = count($parent) ? " parent: ({$parent['name']}" : '';
$prefix = str_repeat('-', $directory['level']);
echo "$prefix {$directory['name']} $parent_name <br/>"; // <-----------
if(count($directory['children'])){
// list the children directories
showDirectories($directory['children'], $directory);
}
}
}
showDirectories($directories);
// pathA
// - subPathA1 (parent: pathA)
// -- subsubPathA11 (parent: subPathA1)
// - subPathA2
// pathB
// pathC
Run Code Online (Sandbox Code Playgroud)
小智 5
试试这段代码:
<?php
$path = '/var/www/html/project/somefolder';
$dirs = array();
// directory handle
$dir = dir($path);
while (false !== ($entry = $dir->read())) {
if ($entry != '.' && $entry != '..') {
if (is_dir($path . '/' .$entry)) {
$dirs[] = $entry;
}
}
}
echo "<pre>"; print_r($dirs); exit;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185819 次 |
| 最近记录: |