Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie grafik z folderow ?! jak ?!
Forum PHP.pl > Forum > PHP
djbarca
mam taki problem ... zalozmy
w folderze grafika znajduja sie jakies foldery w tych folderach znajduja sie podfoldery a w kazdym z tych podfolderow znajduje sie folder male .. jak mozna policzyc ile jest lacznie plikow w tych folderach male ... questionmark.gif
Cezar708
Mogą być małe błędy, jak będą daj znać to coś z tym poradzimy
  1. <?php
  2. $countOfMale = 0;
  3. $arrExtent = array('gif', 'jpeg', 'bmp' ); // i tam inne rozszerzenia, ktore uwazasz za grafike (malymi literami)
  4. // liczy ile jest grafik w podkatalogu male
  5. function countOfMale($dirName){
  6. global $arrExtent;
  7. if ( basename($dirName) != 'male' ) {
  8. return 0;
  9. }
  10. $intReturn = 0;
  11. $d = dir($dirName);
  12. while (false !== ($entry = $d->read())) {
  13. if ( is_file("$dirName/$entry") ){
  14. $arr = explode(".", $entry);
  15. $ext = $arr[count($arr)-1];
  16. if ( in_array( strtolower($ext), $arrExtent) ){
  17.  $intReturn ++;
  18. }
  19. }
  20. }
  21. $d->close();
  22. return $intReturn;
  23. }
  24. // chodzi po katalogu
  25. function getDir($dirName){
  26. global $countOfMale;
  27. $d = dir($dirName);
  28. while (false !== ($entry = $d->read())) {
  29. if ( is_dir("$dirName/$entry") ){
  30. if ( $entry == 'male' ){
  31. $countOfMale += countOfMale("$dirName/$entry");
  32. } else {
  33. // rekurencja
  34. getDir("$dirName/$entry");
  35. }
  36. }
  37. } 
  38. $d->close();
  39. }
  40.  
  41. // wywolanie, zakladam ze kat `grafika` jest w tym samym katalogu co skrypt wywolu
    jacy
  42.  getDir('grafika');
  43. ?>
batman
Wybacz Cezar708 za moje gorzkie słowa, ale wydaje mi się, że musisz poczytać o PHP5. Ten sam efekt, znacznie prościej:

  1. <?php
  2. $dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("grafika"));
  3. $licznik = 0;
  4. foreach($dir as $file) {
  5. // jesli nie dziala to uzyj takiego warunku
  6. // if(substr($file->getPath(), -4) == 'male') {
  7.  
  8. if(substr($file->getPath(), -5) == '/male') {
  9. $licznik++;
  10. }
  11. }
  12. echo $licznik;
  13. ?>

Założenie jak powyżej. Folder grafika znajduje się w tej samej lokalizacji co skrypt zliczający.
Cezar708
Panie batmanie...

1. oki nie pomyślałem o takim rozwiązaniu co nie znaczy, że również jest to rozwiązanie
2. Kolega djbarca nic nie wspominał o PHP5
3. Twój skrypt nie pokazuje tego co chce kolega djbarca chciał uzyskać, ponieważ Ty jedynie policzyłeś katalogi o nazwie `male` a nie o to chodziło.
4. Mówienie komuś, że nie zna PHP5, bo nie wykorzystał wbudowanej biblioteki, tylko pokazał inny pomysł jest bez sensu.

Pozdrawiam smile.gif
mike
Cytat(Cezar708 @ 19.10.2007, 15:20:11 ) *
2. Kolega djbarca nic nie wspominał o PHP5
Domyślnie bierze się pod uwagę wersję aktualnie rekomendowaną a nie jakąś archaiczną. Zalecane jest od kilku lat PHP5.
Cytat(Cezar708 @ 19.10.2007, 15:20:11 ) *
3. Twój skrypt nie pokazuje tego co chce kolega djbarca chciał uzyskać, ponieważ Ty jedynie policzyłeś katalogi o nazwie `male` a nie o to chodziło.
A to z kolei przykład, że nie rozumiesz kodu bo tak się składa, że liczy on pliki a nie foldery.
Cytat(Cezar708 @ 19.10.2007, 15:20:11 ) *
4. Mówienie komuś, że nie zna PHP5, bo nie wykorzystał wbudowanej biblioteki, tylko pokazał inny pomysł jest bez sensu.
Bez sensu jest pokazywanie starych archaicznych sposóbów ludziom, którzy się dopiero uczą. Podtrzymujesz ich niewiedzę.
batman
Cezar708
1. Twoje rozwiązanie jest znacznie mniej wydajne, bardziej skomplikowane i bardziej podatne na błędy. Ale fakt, to też jest rozwiązanie.
2. Nie musiał. PHP4 jest wspierany do końca roku i nikt przy zdrowych zmysłach nie pisze już w tej wersji języka.
3. Podtrzymuję moją tezę o poczytaniu o na temat PHP5. A dlaczego? Dowiesz się jak poczytasz.
4. Bez sensu jest pisanie czegoś, co jest już napisane. Czasy, gdy dwóch programistów się spierało o to, który potrafi napisać szybszy program w asemblerze do wyświetlania piksela, minęły. Teraz stawia się na wydajność programisty.

edit
Byłeś szybszy dosłownie o sekundy winksmiley.jpg
djbarca
ten pierwszy kod nie chodzil ... ale ten php5 dziala idealnie ... wielkie dzieki Panie batmanie smile.gif
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.