Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

Làm thế nào tôi có thể nhận được tất cả các thư mục phụ của một thư mục nhất định mà không cần tệp, ________ 18 (thư mục hiện tại) hoặc ________ 19 (thư mục cha) và sau đó sử dụng từng thư mục trong một hàm?

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

Mohammed h

6.68916 Huy hiệu vàng77 Huy hiệu bạc125 Huy hiệu Đồng16 gold badges77 silver badges125 bronze badges

Đã hỏi ngày 26 tháng 3 năm 2010 lúc 14:55Mar 26, 2010 at 14:55

Lựa chọn 1:

Bạn có thể sử dụng

$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
        echo $fileinfo->getFilename().'
'; } }
0 với tùy chọn
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
        echo $fileinfo->getFilename().'
'; } }
1.

Lựa chọn 2:

Một tùy chọn khác là sử dụng

$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
        echo $fileinfo->getFilename().'
'; } }
2 để lọc danh sách các thư mục. Tuy nhiên, lưu ý rằng mã bên dưới sẽ bỏ qua các thư mục hợp lệ với các khoảng thời gian trong tên của họ như
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
        echo $fileinfo->getFilename().'
'; } }
3.

$dirs = array_filter(glob('*'), 'is_dir');
print_r($dirs);

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

Pikamander2

6.5213 Huy hiệu vàng43 Huy hiệu bạc65 Huy hiệu Đồng3 gold badges43 silver badges65 bronze badges

Đã trả lời ngày 26 tháng 3 năm 2010 lúc 14:58Mar 26, 2010 at 14:58

ghostdog74ghostdog74ghostdog74

316K56 Huy hiệu vàng254 Huy hiệu bạc341 Huy hiệu Đồng56 gold badges254 silver badges341 bronze badges

7

Đây là cách bạn chỉ có thể truy xuất các thư mục với Quả cầu:

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);

Đã trả lời ngày 9 tháng 6 năm 2010 lúc 13:44Jun 9, 2010 at 13:44

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

COREUSCOREUSCoreus

5.0673 Huy hiệu vàng34 Huy hiệu bạc48 Huy hiệu đồng3 gold badges34 silver badges48 bronze badges

4

Lớp thư mục SPL cung cấp một giao diện đơn giản để xem nội dung của các thư mục hệ thống tập tin.

$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
        echo $fileinfo->getFilename().'
'; } }

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

Đã trả lời ngày 4 tháng 10 năm 2013 lúc 10:14Oct 4, 2013 at 10:14

Stlocstlocstloc

1.4681 Huy hiệu vàng16 Huy hiệu bạc26 Huy hiệu đồng1 gold badge16 silver badges26 bronze badges

0

Gần như giống như trong câu hỏi trước của bạn:

$iterator = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($yourStartingPath), 
            RecursiveIteratorIterator::SELF_FIRST);

foreach($iterator as $file) {
    if($file->isDir()) {
        echo strtoupper($file->getRealpath()), PHP_EOL;
    }
}

Thay thế

$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
        echo $fileinfo->getFilename().'
'; } }
4 bằng chức năng mong muốn của bạn.

Đã trả lời ngày 26 tháng 3 năm 2010 lúc 15:11Mar 26, 2010 at 15:11

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

GordongordonGordon

309K72 Huy hiệu vàng528 Huy hiệu bạc553 Huy hiệu Đồng72 gold badges528 silver badges553 bronze badges

3

Thử mã này:

read())) {
    if ($entry != '.' && $entry != '..') {
       if (is_dir($path . '/' .$entry)) {
            $dirs[] = $entry; 
       }
    }
}

echo "
"; print_r($dirs); exit;

Đã trả lời ngày 6 tháng 11 năm 2015 lúc 7:11Nov 6, 2015 at 7:11

keyur0517keyur0517keyur0517

852 Huy hiệu bạc6 Huy hiệu Đồng2 silver badges6 bronze badges

Trong mảng:

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;
}

//access:

$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

Ví dụ để hiển thị tất cả:

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 
"; // <----------- if(count($directory['children'])){ // list the children directories showDirectories($directory['children'], $directory); } } } showDirectories($directories); // pathA // - subPathA1 (parent: pathA) // -- subsubPathA11 (parent: subPathA1) // - subPathA2 // pathB // pathC

Đã trả lời ngày 9 tháng 3 năm 2017 lúc 10:24Mar 9, 2017 at 10:24

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

Bạn có thể thử chức năng này (bắt buộc PHP 7)

function getDirectories(string $path) : array
{
    $directories = [];
    $items = scandir($path);
    foreach ($items as $item) {
        if($item == '..' || $item == '.')
            continue;
        if(is_dir($path.'/'.$item))
            $directories[] = $item;
    }
    return $directories;
}

Đã trả lời ngày 12 tháng 9 năm 2016 lúc 9:44Sep 12, 2016 at 9:44

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

PepernootpePernootPepernoot

3.2791 Huy hiệu vàng21 Huy hiệu bạc44 Huy hiệu đồng1 gold badge21 silver badges44 bronze badges

Chỉ danh sách không được ghi lại các thư mục

Câu hỏi duy nhất mà trực tiếp hỏi điều này đã bị đóng cửa một cách sai lầm, vì vậy tôi phải đặt nó ở đây.

Nó cũng cung cấp khả năng lọc thư mục.

/**
 * Copyright © 2020 Theodore R. Smith 
 * License: MIT
 *
 * @see https://stackoverflow.com/a/61168906/430062
 *
 * @param string $path
 * @param bool   $recursive Default: false
 * @param array  $filtered  Default: [., ..]
 * @return array
 */
function getDirs($path, $recursive = false, array $filtered = [])
{
    if (!is_dir($path)) {
        throw new RuntimeException("$path does not exist.");
    }

    $filtered += ['.', '..'];

    $dirs = [];
    $d = dir($path);
    while (($entry = $d->read()) !== false) {
        if (is_dir("$path/$entry") && !in_array($entry, $filtered)) {
            $dirs[] = $entry;

            if ($recursive) {
                $newDirs = getDirs("$path/$entry");
                foreach ($newDirs as $newDir) {
                    $dirs[] = "$entry/$newDir";
                }
            }
        }
    }

    return $dirs;
}

Đã trả lời ngày 12 tháng 4 năm 2020 lúc 8:47Apr 12, 2020 at 8:47

Theodore R. Smiththeodore R. SmithTheodore R. Smith

21.1K12 Huy hiệu vàng60 Huy hiệu bạc89 Huy hiệu đồng12 gold badges60 silver badges89 bronze badges

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
0

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

Đã trả lời ngày 4 tháng 8 năm 2012 lúc 7:41Aug 4, 2012 at 7:41

Đây là mã Liner một:

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
1

Đã trả lời ngày 25 tháng 7 năm 2019 lúc 11:48Jul 25, 2019 at 11:48

SultansultanSultan

6095 Huy hiệu bạc13 Huy hiệu Đồng5 silver badges13 bronze badges

Cách thích hợp

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
2

Lấy cảm hứng từ Laravel

Đã trả lời ngày 1 tháng 6 năm 2016 lúc 22:55Jun 1, 2016 at 22:55

MacBricMacbricMacbric

4734 Huy hiệu bạc10 Huy hiệu Đồng4 silver badges10 bronze badges

1

Hàm đệ quy sau đây trả về một mảng với danh sách đầy đủ các thư mục phụ

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
3

Nguồn: https://www.lucidar.me/en/web-dev/how-to-get-subdirectories-in-php/

Đã trả lời ngày 21 tháng 9 năm 2018 lúc 4:33Sep 21, 2018 at 4:33

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

FifififiFifi

3.1232 Huy hiệu vàng23 Huy hiệu bạc47 Huy hiệu đồng2 gold badges23 silver badges47 bronze badges

1

Tìm tất cả các tập tin PHP một cách đệ quy. Logic phải đủ đơn giản để điều chỉnh và nó nhằm mục đích nhanh (ER) bằng cách tránh các cuộc gọi chức năng.

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
4

Đã trả lời ngày 7 tháng 12 năm 2016 lúc 9:54Dec 7, 2016 at 9:54

Hướng dẫn php list folders in directory - danh sách php thư mục trong thư mục

2

Nếu bạn đang tìm kiếm một giải pháp liệt kê thư mục đệ quy. Sử dụng mã dưới đây, tôi hy vọng nó sẽ giúp bạn.

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
5

Đã trả lời ngày 27 tháng 5 năm 2017 lúc 18:05May 27, 2017 at 18:05

FaisalfaisalFaisal

4.4512 Huy hiệu vàng39 Huy hiệu bạc49 Huy hiệu đồng2 gold badges39 silver badges49 bronze badges

Tìm tất cả các thư mục con theo một thư mục cụ thể.

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
6

Vật mẫu :

$directories = glob($somePath . '/*' , GLOB_ONLYDIR);
7

Đã trả lời ngày 5 tháng 11 năm 2015 lúc 17:09Nov 5, 2015 at 17:09

user9342572809user9342572809user9342572809

Huy hiệu vàng 11,9K446 Huy hiệu bạc70 Huy hiệu đồng4 gold badges46 silver badges70 bronze badges

3

Làm thế nào bao gồm tất cả các tệp trong một thư mục trong PHP?

Để bao gồm tất cả các tệp PHP từ thư mục cùng một lúc cần một vòng lặp foreach ...
Ví dụ: Ví dụ này chứa bốn tệp PHP (File1. ...
Tạo File1.php trong thư mục 'MyGeek':.
Tạo File2.php trong thư mục 'MyGeeks':.
Tạo File3.php trong thư mục 'MyGeeks':.
Tạo File4.php trong thư mục 'MyGeeks':.
Tạo Main.php bên ngoài thư mục:.

__ dir __ trong PHP là gì?

__Dir__ có thể được sử dụng để có được thư mục làm việc mã hiện tại.Nó đã được giới thiệu trong PHP bắt đầu từ phiên bản 5.3.Nó tương tự như sử dụng dirname (__ file__).Thông thường, nó được sử dụng để bao gồm các tệp khác có trong một tệp được bao gồm.used to obtain the current code working directory. It has been introduced in PHP beginning from version 5.3. It is similar to using dirname(__FILE__). Usually, it is used to include other files that is present in an included file.

Làm thế nào để tìm thư mục của một tệp trong PHP?

Sử dụng hàm getcwd () để lấy tên thư mục hiện tại trong PHP.Hàm getcwd () cung cấp thư mục làm việc hiện tại.Giá trị trả về là một chuỗi trên thành công.Hàm không lấy bất kỳ tham số nào.. The getcwd() function gives the current working directory. The returned value is a string on success. The function does not take any parameters.

Php Glob là gì?

Hàm glob () trả về một mảng tên tệp hoặc thư mục phù hợp với một mẫu được chỉ định.returns an array of filenames or directories matching a specified pattern.