PHP Tutorial

PHP Flow Control

PHP Functions

PHP String

PHP Array

PHP Date Time

PHP Object Oriented

Regular Expression

PHP Cookie & Session

PHP Error & Exception handling

MySQL in PHP

PHP File Directory

PHP Image Processing

PHP Iterates Over All Files And Folders Under A Folder

In PHP, the opendir() and readdir() functions can be used to open a directory and read its contents. However, these functions only read the immediate contents of a directory. If you want to iterate over all files and folders under a directory, including those in subdirectories, you will need to use recursion.

Here's an example of a function that will recursively iterate over all files and folders under a directory:

<?php
function scan_directory_recursively($directory, $sub_folders = '') {
    $directory_tree = array();
    $directory = rtrim($directory, '/');
    $directory_scan = scandir($directory);
    unset($directory_scan[0], $directory_scan[1]);

    foreach ($directory_scan as $key => $value) {
        $path = $directory.'/'.$value;
        if (is_dir($path)) {
            $directory_tree[] = array(
                'path'    => $path,
                'name'    => $value,
                'kind'    => 'directory',
                'content' => scan_directory_recursively($path, $value)
            );
        } elseif (is_file($path)) {
            $directory_tree[] = array(
                'path'    => $path,
                'name'    => $value,
                'kind'    => 'file'
            );
        }
    }
    return $directory_tree;
}

$directory_tree = scan_directory_recursively('path/to/your/directory');

print_r($directory_tree);
?>

In this example, scan_directory_recursively() is a recursive function that scans a directory and returns an array representing the directory tree. Each item in the array is an associative array containing the path, name, and kind (either 'directory' or 'file') of a file or directory. If the item is a directory, it also contains a 'content' item, which is a similar array representing the contents of that directory.

You can replace 'path/to/your/directory' with the path to the directory you want to scan. After calling scan_directory_recursively(), the script prints out the resulting directory tree using print_r().

Please remember to replace 'path/to/your/directory' with the actual directory you want to scan.

  1. How to list all files and folders in a directory using PHP: Use scandir() to list files and folders in a directory:

    <?php
    $directoryPath = '/path/to/directory';
    $contents = scandir($directoryPath);
    
    foreach ($contents as $item) {
        echo $item . "\n";
    }
    ?>
    
  2. Recursive directory iteration in PHP: Implement recursive directory iteration using a custom function:

    <?php
    function listFilesRecursively($dir) {
        $contents = scandir($dir);
    
        foreach ($contents as $item) {
            if ($item != '.' && $item != '..') {
                $itemPath = $dir . '/' . $item;
    
                if (is_dir($itemPath)) {
                    listFilesRecursively($itemPath);
                } else {
                    echo $itemPath . "\n";
                }
            }
        }
    }
    
    $rootDirectory = '/path/to/root/directory';
    listFilesRecursively($rootDirectory);
    ?>
    
  3. PHP opendir(), readdir(), and closedir() for iterating over files and folders: Use the trio opendir(), readdir(), and closedir() for directory iteration:

    <?php
    $directoryPath = '/path/to/directory';
    $dirHandle = opendir($directoryPath);
    
    while (($item = readdir($dirHandle)) !== false) {
        echo $item . "\n";
    }
    
    closedir($dirHandle);
    ?>
    
  4. Using PHP scandir() for listing directory contents: Utilize scandir() for listing directory contents:

    <?php
    $directoryPath = '/path/to/directory';
    $contents = scandir($directoryPath);
    
    foreach ($contents as $item) {
        echo $item . "\n";
    }
    
  5. Iterating over files with glob() in PHP: Use glob() for file iteration with pattern matching:

    <?php
    $directoryPath = '/path/to/directory';
    $files = glob($directoryPath . '/*');
    
    foreach ($files as $file) {
        echo $file . "\n";
    }
    
  6. Recursive file and folder iteration with RecursiveDirectoryIterator in PHP: Use RecursiveDirectoryIterator for recursive iteration:

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
    
    foreach ($iterator as $item) {
        echo $item . "\n";
    }
    
  7. PHP DirectoryIterator for listing files and folders: Utilize DirectoryIterator for an object-oriented approach:

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new DirectoryIterator($directoryPath);
    
    foreach ($iterator as $item) {
        echo $item->getFilename() . "\n";
    }
    
  8. Filtering files and folders during iteration in PHP: Apply filters during iteration using RecursiveCallbackFilterIterator:

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(
        new RecursiveCallbackFilterIterator(
            new RecursiveDirectoryIterator($directoryPath),
            function ($current) {
                return $current->isFile() || $current->isDir();
            }
        )
    );
    
    foreach ($iterator as $item) {
        echo $item . "\n";
    }
    
  9. PHP recursive iteration and file path manipulation: Combine recursive iteration with file path manipulation:

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
    
    foreach ($iterator as $item) {
        $relativePath = substr($item->getPathname(), strlen($directoryPath) + 1);
        echo $relativePath . "\n";
    }
    
  10. PHP SPL RecursiveIterator for recursive directory iteration: Use SPL's RecursiveIterator for recursive directory iteration:

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
    
    foreach ($iterator as $item) {
        echo $item . "\n";
    }
    
  11. Iterating over hidden files and folders in PHP: Include hidden files and folders in the iteration:

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($directoryPath, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST
    );
    
    foreach ($iterator as $item) {
        echo $item . "\n";
    }
    
  12. PHP iterator_to_array() for converting directory iteration to an array: Convert directory iteration to an array using iterator_to_array():

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
    $items = iterator_to_array($iterator, false);
    
    foreach ($items as $item) {
        echo $item . "\n";
    }
    
  13. PHP iterator_count() for counting files and folders during iteration: Count files and folders during iteration using iterator_count():

    <?php
    $directoryPath = '/path/to/directory';
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
    
    $count = iterator_count($iterator);
    
    echo "Total items: $count\n";