Pracuję nad nieco nowym projektem. Chciałem wiedzieć, ile plików znajduje się w określonym katalogu.
<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>
To jest to, co mam do tej pory (od poszukiwań). Jednak nie wyświetla się prawidłowo? Dodałem kilka notatek, więc nie krępuj się, aby je usunąć, są po to, bym mógł je jak najlepiej zrozumieć.
Jeśli potrzebujesz więcej informacji lub czujesz, że nie opisałem tego wystarczająco wystarczająco, możesz to zaznaczyć.
count(scandir("uploads/")) - 2
jak ta pętla byłoby krótsze .Odpowiedzi:
Możesz po prostu wykonać następujące czynności:
źródło
FilesystemIterator::SKIP_DOTS
ponieważ i tak jest to ustawienie domyślne.Możesz pobrać liczbę plików w następujący sposób:
gdzie
"*"
jest, możesz zmienić to na określony typ pliku, jeśli chcesz,"*.jpg"
lub możesz zrobić wiele typów plików, takich jak ten:że
GLOB_BRACE
rozszerza flag {a, b, c} pasujące do 'a', 'b', 'c' lubźródło
__DIR__ .
przed"/path/to/dir/"
(__DIR__ . "/path/to/dir/"
)/path/to/dir
by nie powiodło się, ponieważ pierwsze/
oznaczastarting from root dir
. Gdyby tak byłopath/to/dir
, to tak,__DIR__ . '/path/to/dir'
pomogłoby (w tym przypadku musisz użyć/
po__DIR__
Spróbuj tego.
Nie licząc „.” i '..'.
źródło
$num_files = count($files) - 2;
? Z powodu,.
jak również..
.
i..
spróbować tego: $ files =array_diff( scandir("/dir"), array(".", "..") );
array_slice(scandir($directory),2)
Powinieneś mieć :
źródło
Najlepsza odpowiedź moim zdaniem:
źródło
Ponieważ ja też tego potrzebowałem, byłem ciekawy, która alternatywa jest najszybsza.
Odkryłem, że - jeśli chcesz tylko liczyć pliki - rozwiązanie Baby jest znacznie szybsze niż inne. Byłem dość zaskoczony.
Wypróbuj sam:
Uruchomienie testowe: (oczywiście
glob()
nie liczy plików z kropkami)źródło
Działające demo
źródło
Używam tego:
źródło
array_slice
działa podobnie jaksubstr
funkcja, tylko działa z tablicami.Na przykład wydzieliłoby to pierwsze dwa klucze tablicy z tablicy:
A jeśli pominiesz pierwszy parametr, jak w pierwszym przykładzie, tablica nie będzie zawierać pierwszych dwóch par klucz / wartość * („.” I „..”).
źródło
Może komuś się przyda. W systemie Windows możesz pozwolić systemowi Windows wykonać zadanie, wywołując dir-command. Używam ścieżki absolutnej, na przykład
E:/mydir/mysubdir
.źródło
To powinno zadziałać, wejdź do katalogu w dirname. i niech magia się wydarzy.
źródło
źródło
W oparciu o zaakceptowaną odpowiedź, oto sposób POWTARZANIA liczenia wszystkich plików w katalogu:
źródło
Oto dość szybka funkcja PHP Linux. Trochę brudny, ale spełnia swoje zadanie!
$ dir - ścieżka do katalogu
$ type - f, d lub false (domyślnie)
f - zwraca tylko liczbę plików
d - zwraca tylko liczbę folderów
false - zwraca całkowitą liczbę plików i folderów
Możesz dostosować do swoich potrzeb.
Należy pamiętać, że to nie zadziała w systemie Windows.
źródło
proste dodaj gotowe ....
źródło