Pourquoi est-ce que chaque fois que j'utilise scandir (), je reçois des points 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] => .
)
Ce sont les répertoires actuel (.
) et parent (..
). 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 liste de répertoire:
.
fait référence au répertoire en cours..
fait référence au répertoire parent (ou à la racine, si le répertoire actuel est la racine)Vous pouvez les supprimer des résultats en les filtrant des résultats de scandir:
$allFiles = scandir(__DIR__); // Or any other directory
$files = array_diff($allFiles, array('.', '..'));
En convention Unix. est un lien vers le répertoire en cours alors que .. est un lien vers le répertoire parent. Les deux existent sous forme de fichier dans l'index du répertoire.
Pour supprimer .
et ..
de scandir
, utilisez cette fonction:
function scandir1($dir)
{
return array_values(array_diff(scandir($dir), array('..', '.')));
}
La commande array_values
réindexe le tableau afin qu'il commence à 0. Si vous n'avez pas besoin de réindexer le tableau, la réponse acceptée fonctionnera correctement. Simplement: array_diff(scandir($dir), array('..', '.'))
.
Dans une ligne de code:
$files=array_slice(scandir('/path/to/directory/'), 2);