Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja fscanf
Forum PHP.pl > Forum > PHP
mkmich
Witam!
W C++ nie miałem problemu z wczytaniem liczb z pliku tekstowego zawier. macierz liczb przy pomocy f-kcji
fscanf(). W PHP po zastosowaniu tej f_kcji postaci fscanf($fx,"%f",$x)
w procedurze: $i=0; while(fscanf($fx,"%f",$x)==1) { od[$i] = $x; $i++;}
sczytuje cały wiersz macierzy i koniec !? A co z pozostałymi wierszami ? Użycie drugiej pętli while(!(feof($fx))) { } nic nie dało, a zależy mi aby załą macierz wstawić do tablicy jednowymiarowej od[].
Pozdr.[php][/php]
Crozin
Z dokumentacji funkcji fscanf:
Cytat
Each call to fscanf() reads one line from the file.
Mógłbyś to wykonać np. tak:
  1. $od = array();
  2.  
  3. while ($line = fscanf($fp, "%f")) {
  4. $od = array_merge($od, $line);
  5. }
mkmich
[php][/php]
Dzięki!
Ale do tablicy $od wczytuje pierwszy wiersz macierzy i koniec. Macierz ma wymiary 9 x 9.
W tym to jest problem. Do tablicy $od mozna wczytac pozostałe wiersze przy pomocy
np. $od = file('macierz.txt') gdzie macierz.txt zawiera wspomnianą macierz liczb 9 x 9.
Pozd.
zegarek84
w c++ jakoś zawsze wolałem strumienie od fscanf (a i też tego mało było) zaś w PHP jakoś zawsze wyrażenia regularne... ale...

luknij na manual, funkcja fscanf może Ci wczytać więcej niż jedną linię... a w przykładzie w manualu separowali zmienne białymi znakami i na końcu podali nawet znak nowej linii \n (w windowsie to \r\n)... nie chce mi się sprawdzać przypadków tylko pokazuję, co w oczy kole i porównaj z manualem:
fscanf
mkmich
[php][/php]
Witam!
Bez pomocy funkcji fscaf() można wczytać macierz liczbową do tablicy jednowymiarowej.
Przykład:
Niech plik tekstowy test.txt zawiera następująca macierz liczb:
0 5 7
9 6 8
11 3 4
Separatorem liczb w tym przypadku jest spacja (tylko jedna), może być np ";".
I dalej.
$fx = './test.txt';
$fy = file($fx); //$fy - tablica 3 elementowa zawierająca wiersze macierzy
foreach($fy as $line_num => $line)
{ $fxy = explode(" ", $line); // $fxy - tablica zawierajaca elementy wiersza macierzy
$fz = array_merge($fz,$fxy); // $fz - jenowymiarowa tablica elementów macierz test.txt
}
$ilosc_elm_macierzy = count($fz);
// zamiana łańcucha na liczby
for($i = 0; $i < $ilosc_elm_macierz; $i++)
{
$fz[$i] = (double) $fz[$i];
}

Może komuś się przyda to rozwiazanie.
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.