Ce face scandir
scandir citește tot conținutul unui director într-un tablou de nume. Lista conține mereu și intrările speciale . (directorul curent) și .. (directorul părinte), pe care de obicei le elimini.
Rezultatul conține doar nume, nu căi complete. Pentru a filtra după extensie, glob este adesea mai simplu.
Parametri
| Parametru | Descriere |
|---|---|
$directory |
Directorul citit. |
$sorting_order |
Opțional. SCANDIR_SORT_ASCENDING (implicit), SCANDIR_SORT_DESCENDING sau SCANDIR_SORT_NONE (fără sortare, mai rapid). |
$context |
Opțional. Un context de stream. |
Ce returnează
Un tablou cu nume sau false (cu avertisment) dacă directorul nu poate fi citit.
Exemple
Exemplul 1: Conținutul unui director
<?php
mkdir("poze/2025", 0777, true);
touch("poze/munte.jpg");
touch("poze/mare.jpg");
print_r(scandir("poze"));
Rezultat
Array
(
[0] => .
[1] => ..
[2] => 2025
[3] => mare.jpg
[4] => munte.jpg
)
Exemplul 2: Fără . și ..
<?php
mkdir("rapoarte");
foreach (["ianuarie", "februarie", "martie"] as $luna) {
touch("rapoarte/$luna.pdf");
}
$fisiere = array_values(array_diff(scandir("rapoarte"), [".", ".."]));
print_r($fisiere);
Rezultat
Array
(
[0] => februarie.pdf
[1] => ianuarie.pdf
[2] => martie.pdf
)
Exemplul 3: Cel mai nou backup, după nume
Numele cu data în format Y-m-d se sortează corect alfabetic, deci primul element în ordine descrescătoare este cel mai recent.
<?php
mkdir("backup");
foreach (["2026-10-17", "2026-10-19", "2026-10-18"] as $zi) {
touch("backup/baza-$zi.sql");
}
$lista = scandir("backup", SCANDIR_SORT_DESCENDING);
echo "Cel mai nou: " . $lista[0];
Rezultat
Cel mai nou: baza-2026-10-19.sql
Greșeli frecvente
- Uiți de
.și..și le prelucrezi ca pe niște fișiere. Elimină-le cuarray_diff. - Folosești numele direct, fără directorul în față:
unlink($nume)în loc deunlink("rapoarte/$nume").
Comenzi înrudite
glob: Găsește fișierele ale căror căi se potrivesc cu un tipar, de exemplu poze/*.jpg.opendir / readdir / closedir: Deschide un director pentru a-i citi intrările una câte una, cu readdir, apoi îl închide cu closedir.is_file: Verifică dacă o cale indică un fișier obișnuit (nu un director).is_dir: Verifică dacă o cale indică un director existent.