Pourquoi est-ce que chaque fois que j'utilise scandir() je reçois des périodes au début du tableau?
Pourquoi est-ce que chaque fois que j'utilise scandir() je reçois des périodes au début du tableau?
Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)
4 réponses
Ceux qui sont au courant (.
) et parent (..
) répertoires. Ils sont présents dans tous les répertoires, et sont utilisés pour désigner le répertoire lui-même et son parent direct.
il y a deux entrées présentes dans chaque répertoire:
.
renvoie au répertoire courant..
désigne le répertoire parent (ou de la racine, si le répertoire courant est la racine)
vous pouvez les supprimer des résultats en les filtrant hors des résultats de scandir:
$allFiles = scandir(__DIR__); // Or any other directory
$files = array_diff($allFiles, array('.', '..'));
dans la convention Unix . est un lien vers le répertoire courant .. est un lien vers le répertoire parent. Tous les deux existent en tant que fichier dans l'index des répertoires.
supprimer .
et ..
scandir
utiliser cette fonction:
function scandir1($dir)
{
return array_values(array_diff(scandir($dir), array('..', '.')));
}
array_values
la commande re-indexe le tableau de façon à ce qu'il démarre à partir de 0. Si vous n'avez pas besoin du tableau de réindexation, alors la réponse acceptée fonctionnera très bien. Tout simplement: array_diff(scandir($dir), array('..', '.'))
.