Why is it whenever I use scandir() I receive periods at the beginning of the array?

Why is it whenever I use scandir() I receive periods at the beginning of the array?

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)

There are two entries present in every directory listing:

  • . refers to the current directory
  • .. refers to the parent directory (or the root, if the current directory is the root)

You can remove them from the results by filtering them out of the results of scandir:

$allFiles = scandir(__DIR__); // Or any other directory
$files = array_diff($allFiles, array('.', '..'));

Those are the current (.) and parent (..) directories. They are present in all directories, and are used to refer to the directory itself and its direct parent.