mkmich
3.12.2011, 19:29:53
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
3.12.2011, 20:27:17
Z dokumentacji funkcji
fscanf:
Cytat
Each call to fscanf() reads one line from the file.
Mógłbyś to wykonać np. tak:
while ($line = fscanf($fp, "%f")) { }
mkmich
3.12.2011, 22:13:01
[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
3.12.2011, 22:55:48
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
14.12.2011, 12:24:57
[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.