Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Ilość plików w katalogu
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Np. zamiast foreach daj count()+1 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Skie
post
Post #3





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


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() ?
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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');
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

Ostrzeżenie: (0%)
-----


  1. $ile = 0;
  2. foreach(glob($filePath.'*') as $fileName) {
  3. $ile++;
  4. }
  5. echo $ile;
Go to the top of the page
+Quote Post
Spawnm
post
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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ę .
Go to the top of the page
+Quote Post
Skie
post
Post #7





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


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 :-)

Ten post edytował Skie 20.08.2009, 10:00:48
Go to the top of the page
+Quote Post
Marcuez
post
Post #8





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.07.2009
Skąd: Poligon Osielsko

Ostrzeżenie: (0%)
-----


  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. ?>


Ten post edytował Marcuez 20.08.2009, 10:10:48
Go to the top of the page
+Quote Post
skowron-line
post
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/winksmiley.jpg) pzdr
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:26