Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Ilość plików w katalogu
Forum PHP.pl > Forum > Przedszkole
Skie
Witam,
czy w PHPie da się w jakiś sposób uzyskać informacje o ilości plików w danym katalogu bezpośrednio od systemu?

Obecnie liczę pliki w najprostszy możliwy sposób - foreach() + glob() i po kolei zliczam ilość wykonanych pętli - tylko, że takie coś jest raczej mało wydajne.
Co o tym myślicie?
Spawnm
Np. zamiast foreach daj count()+1 smile.gif
Skie
funkcje count()?

Wybacz, ale niezbyt zrozumiałem o co Ci chodzi.
Jak miałbym zastąpić takie zliczanie: (przykładowo)

  1. foreach(glob($filePath.'*') as $fileName) {
  2. $count++;
  3. }


... samą funkcją count() ?
skowron-line
Znalezione na necie w kilka sekund
  1. /**
  2. * Count files or sub-directories in a directory
  3. * @author digital-ether at fijiwebdesign.com
  4. *
  5. * @param string directory path
  6. * @param string element type to count (file|dir)
  7. */
  8. function count_dir_elements($dir_path, $type = 'file') {
  9. $file_count = 0;
  10. $dir_count = 0;
  11. if ($dh = opendir($dir_path)) {
  12. $i = 0;
  13. while ($el = readdir($dh)) {
  14. $path = $dir.'/'.$el;
  15.  
  16. if (is_dir($path) && $el != '.' && $el != '..') {
  17. $dir_count++;
  18. } elseif (is_file($path)) {
  19. $file_count++;
  20. }
  21. $i++;
  22. }
  23. closedir($dh);
  24. } else {
  25. return false;
  26. }
  27. return $type == 'file' ? $file_count : $dir_count;
  28. }
  29.  
  30. // eg: count the files in this directory
  31.  
  32. echo count_dir_elements(dirname(__FILE__), $type = 'file');
artur_dziocha
  1. $ile = 0;
  2. foreach(glob($filePath.'*') as $fileName) {
  3. $ile++;
  4. }
  5. echo $ile;
Spawnm
Cytat(Skie @ 20.08.2009, 10:36:00 ) *
funkcje count()?

Wybacz, ale niezbyt zrozumiałem o co Ci chodzi.
Jak miałbym zastąpić takie zliczanie: (przykładowo)

//...

... samą funkcją count() ?


pisałem samo foreach , glob daje ci tablicę .
Skie
skowron-line: ten kod wygląda mi na jeszcze mniej wydajny niż moja pętla - więcej warunków niż u mnie + while()
Spawnm: dzięki, że też sam na to nie wpadłem :-)
Marcuez
  1. <?php
  2. $dir=opendir("images/"); // Twój katalog, a po nim slesh!
  3. while($nazwa=readdir($dir)){
  4. if(($nazwa!=".")&&($nazwa!="..")){
  5. $pliki[]=$nazwa;
  6. }
  7. }
  8. $ilosc=count($pliki);
  9. echo $ilosc;
  10. ?>
skowron-line
Cytat(Skie @ 20.08.2009, 08:59:16 ) *
skowron-line: ten kod wygląda mi na jeszcze mniej wydajny niż moja pętla - więcej warunków niż u mnie + while()

Pamiętaj że nie zawsze będziesz chciał zliczyć tylko pliki w folderze z czasem może Ci dojść kilka warunków i twoja pętla też spęcznieje winksmiley.jpg pzdr
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.