readdir

Read entry from directory handle

&reftitle.description; ``string``false```readdir` ``resource``null```dir_handle`&null;

Returns the name of the next entry in the directory. The entries are returned in the order in which they are stored by the filesystem.

&reftitle.parameters;

`dir_handle`

- The directory handle `resource` previously opened with `opendir`. If the directory handle is not specified, the last link opened by `opendir` is assumed.

&reftitle.returnvalues;

Returns the entry name on success&return.falseforfailure;.

&return.falseproblem;
&reftitle.changelog;

&Version; | &Description;
8.0.0 | `dir_handle` is now nullable.

&reftitle.examples;

### List all entries in a directory

Please note the fashion in which `readdir`'s return value is checked in the examples below. We are explicitly testing whether the return value is identical to (equal to and of the same type as--see Comparison Operators for more information) &false; since otherwise, any directory entry whose name evaluates to &false; will stop the loop (e.g. a directory named "0").

    <?php

    if ($handle = opendir('/path/to/files')) {
        echo "Directory handle: $handle\n";
        echo "Entries:\n";

        /* This is the correct way to loop over the directory. */
        while (false !== ($entry = readdir($handle))) {
            echo "$entry\n";
        }

        /* This is the WRONG way to loop over the directory. */
        while ($entry = readdir($handle)) {
            echo "$entry\n";
        }

        closedir($handle);
    }
    ?>

### List all entries in the current directory and strip out `.` and `..`

    <?php
    if ($handle = opendir('.')) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                echo "$entry\n";
            }
        }
        closedir($handle);
    }
    ?>

&reftitle.seealso;

- `is_dir`
- `glob`
- `opendir`
- `scandir`