Je travaille sur un projet légèrement nouveau. Je voulais savoir combien de fichiers se trouvent dans un certain répertoire.
<div id="header">
<?php
$dir = opendir('uploads/'); # This is the directory it will count from
$i = 0; # Integer starts at 0 before counting
# While false is not equal to the filedirectory
while (false !== ($file = readdir($dir))) {
if (!in_array($file, array('.', '..') and !is_dir($file)) $i++;
}
echo "There were $i files"; # Prints out how many were in the directory
?>
</div>
C'est ce que j'ai jusqu'à présent (de la recherche). Cependant, cela n'apparaît pas correctement? J'ai ajouté quelques notes alors n'hésitez pas à les supprimer, elles le sont juste pour que je puisse les comprendre du mieux que je peux.
Si vous avez besoin de plus d'informations ou si vous pensez que je ne l'ai pas suffisamment décrit, n'hésitez pas à le dire.
count(scandir("uploads/")) - 2
celui de cette boucle.Réponses:
Vous pouvez simplement faire ce qui suit:
la source
FilesystemIterator::SKIP_DOTS
par défaut de toute façon.Vous pouvez obtenir le nombre de fichiers comme ceci:
où
"*"
est, vous pouvez changer cela en un type de fichier spécifique si vous le souhaitez"*.jpg"
ou vous pouvez faire plusieurs types de fichiers comme celui-ci:l'
GLOB_BRACE
indicateur développe {a, b, c} pour correspondre à 'a', 'b' ou 'c'la source
__DIR__ .
avant"/path/to/dir/"
(__DIR__ . "/path/to/dir/"
)/path/to/dir
cela échouerait, car le premier/
signifiestarting from root dir
. S'il y en avaitpath/to/dir
, alors oui,__DIR__ . '/path/to/dir'
cela aiderait (dans ce cas, vous devez utiliser/
après__DIR__
Essaye ça.
Sans compter le "." et '..'.
la source
$num_files = count($files) - 2;
- être ? À cause de.
ainsi que..
.
et..
essayez ceci: $ files =array_diff( scandir("/dir"), array(".", "..") );
array_slice(scandir($directory),2)
Tu aurais dû :
la source
La meilleure réponse à mon avis:
la source
Comme j'avais besoin de cela aussi, j'étais curieux de savoir quelle alternative était la plus rapide.
J'ai trouvé que - si tout ce que vous voulez est un décompte de fichiers - la solution de Baba est beaucoup plus rapide que les autres. J'ai été assez surpris.
Essayez vous-même:
Test de fonctionnement: (évidemment,
glob()
ne compte pas les fichiers à points)la source
Démo de travail
la source
J'utilise ceci:
la source
array_slice
fonctionne de la même manière que lasubstr
fonction, mais fonctionne avec des tableaux.Par exemple, cela couperait les deux premières clés du tableau du tableau:
Et si vous omettez le premier paramètre, comme dans le premier exemple, le tableau ne contiendra pas les deux premières paires clé / valeur * ('.' Et '..').
la source
Peut-être utile à quelqu'un. Sur un système Windows, vous pouvez laisser Windows faire le travail en appelant la commande dir. J'utilise un chemin absolu, comme
E:/mydir/mysubdir
.la source
Cela devrait fonctionner dans le répertoire dans dirname. et laissez la magie opérer.
la source
la source
Sur la base de la réponse acceptée, voici un moyen de compter tous les fichiers dans un répertoire de manière récurrente:
la source
Voici une fonction PHP Linux qui est considérablement rapide. Un peu sale, mais ça fait le boulot!
$ dir - chemin vers le répertoire
$ type - f, d ou false (par défaut)
f - renvoie uniquement le nombre de fichiers
d - renvoie uniquement le nombre de dossiers
false - renvoie le nombre total de fichiers et de dossiers
Vous pouvez ajuster pour répondre à vos besoins.
Veuillez noter que cela ne fonctionnera pas sous Windows.
la source
simple ajouter c'est fait ....
la source