Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]fopen() i fclose() w pętli, Pobieranie liczby wierszy plikow z katalogu
chriswebber
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.11.2007

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


Ze względu na wielkość plików odpadają takie funkcje jak file etc.

  1. <?php
  2. // Lista - nazwy plików w bieżącym katalogu
  3. $nazwa_pliku = glob('{*.unl}', GLOB_BRACE);
  4.  
  5. $liczba_plikow = array();
  6. $liczba_linii = array();
  7.  
  8. for ($i=0;$i<count($nazwa_pliku);$i++) {
  9.        $handle = fopen($nazwa_pliku[$i], &#092;"r\");
  10.            $j=0;
  11.                while (!feof($handle)) {
  12.                    $liczba_linii[$j] = fgets($handle, 3200);
  13.                    $j++;
  14.                }
  15.                $liczba_plikow[$i] = $i;
  16.        fclose($handle);
  17. }
  18. ?>


powinienem otrzymać 2 informacje:

tabelę: $liczba_linii - zawierajacą liczbę liniii w poszczególnych plikach
$liczba_plikow - zawierajacą liczbę plików

Niestety nie udaje mi się ponieważ pętla jest wykonywana tylko raz ( w katalogu plików o zadanym rozszerzeniu jest wiele )
Ponieważ przy użyciu fukcji file() nie mam problemów - to czy problem wynika ze specyfiki funkcji fopen() ?

Ten post edytował chriswebber 17.11.2008, 20:51:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
hiszpanespaniol
post
Post #2





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


oczywiście, że raz się wykona. zła jest konstrukcja cała. brakuje tez nawiasów i klamerek.
najpierw zczytaj za pomocą dir ilość plików w katalogu, później możesz tą wartość wstawić jako $i.


--------------------
Go to the top of the page
+Quote Post
chriswebber
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.11.2007

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


Racja - trochę w for() sięnie wkleiło sad.gif (( - przepraszam

poprawiłem:
  1. <?php
  2. var_dump($liczba_linii)
  3. ?>

Wynik funkcji:
array(2) {
[0]=>
string(10) "config.php"
[1]=>
string(10) "tester.php"
}
  1. <?php
  2. for ($i=0;$i
  3.    $handle = fopen($liczba_linii[$i], &#092;"r\");
  4.            $j=0;        
  5.            while (!feof($handle)) {
  6.                $liczba_linii_final[$i][$j] = fgets($handle, 3200);
  7.                $j++;
  8.            }
  9.        fclose($handle);
  10.    }
  11.  
  12. echo count($liczba_linii_final);
  13. ?>


a otrzymuje

Ten post edytował chriswebber 17.11.2008, 21:46:48
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 09:35