Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczyt z pliku textowego
Forum PHP.pl > Forum > PHP
Wiktor
Proboje odczytac w php baze losowan duzego lotka. Mam taki kod:
Kod
$poprzedni = 0;

for($i = 1; $i <= 15; $i++)

{

for($j = 1; $j <= 6; $j++)

{

$znak = fgetc($bazaDL);



if($znak == ";")

{

$poprzedni = 0;

} else

{

$baza[$i][$j] = $znak;

if($poprzedni == 1)

{

$poprzedni = 0;

$znak2 = fgetc($bazaDL);

$baza[$i][$j] = $baza[$i][$j]*10 + $znak2;

}

}

}

}



for($a = 1; $a <= 15; $a++)

{

for($b = 1; $b <= 6; $b++)

{

print($baza[$a][$b]);

}

print ("

");

}

A w pliku z losowaniami:
;2;11;19;32;35;43
;12;15;27;35;37;49
;1;7;15;20;30;34
;20;28;32;34;46;47
;3;11;16;33;42;44
;10;13;22;37;48;49
;4;5;10;24;31;33
;17;28;43;44;45;48
;10;16;27;29;45;49
;8;17;18;27;36;38
;9;18;28;29;46;47
;8;13;14;23;35;44
;5;12;28;30;33;41
;3;6;13;25;40;43

Jednak cos sie kaszania. Tak jakby w ogole nie mnozyl...(*10). Poza tym kod jest baaardzo nie elegancki Mozecie jakos mi z tym pomoc?
[/code]
Grzesiek
Nie jestem pewien czy o to ci chodzi ale:

Kod
<?

$plik = file("twojplik.txt");

$ilosc_wpisow = count($plik);

for($i=0; $i<$ilosc_wpisow; $i++) {

list($l1, $l2, $l3, l4$, $l5, $l6) = explode(";", $plik[$i]);

//Nie wiem co teraz chcesz z tym zrobić chyba chodzi o to:

for($j=0; $j<6; $j++) {

$wynik[$i] = $l$j * 10 + $wynik[$i]

}

echo "Linia $i ma wartosc $wynik[$i]";

}

?>


Jeżeli coś jest nie tak to wyjaśnij to dokładniej na forum, wtedy postaram się pomóc ci.
Wiktor
Nie nie o to mi chodzilo... sad.gif
Chodzilo mi o to żeby każda liczbe z jednego wiersza wpisac do tablicy:
$tablica[$wiersz][$liczba]. W każdym wierszu jest 6 liczb i każda z nich jest rozdzielona srednikiem - ";". A to mnożenie przez 10 bylo tylko po to że jak odczytywalem 1 znak a liczba byla 2 cyfrowa to trzeba bylo "przesunac" ja o 1 miejsce w lewo na miejsce dzisiatek, a do jednosci dodac jednosc smile.gif.
Grzesiek
Rozumiem, że chodzi tylko o przypisanie do dwuwymiarowej tablicy w łatwy sposób.
W takim razie w miejsce:
Kod
list($l1, $l2, $l3, l4$, $l5, $l6) = explode(";", $plik[$i]);

wstaw:
Kod
list($plik[$i][1], $plik[$i][2], $plik[$i][3], $plik[$i][4], $plik[$i][5], $plik[$i][6]) = explode(";", $plik[$i]);


To tyle jeśli chodzi o przypisanie zmiennych do tablicy biggrin.gif
(Usuń jeszcze całą pętlę for i echo bo są niepotrzebne
Wiktor
Tez cos nie dziala... :cry:

Wczytuje jakos do bazy ale chyba wczytuje tez anaki konca wiersza bo wyswietla taki kwadracik(vel prostakacik). Nie wiem co to jest ale to chyba znak konca wiersza, ale jak go w explode usunac? Jaki on ma znak ascii czy jak inaczej go usunac?
Grzesiek
Z tym się jeszcze nie spotkałem u mnie taki problem nigdy się nie pojawił, ale usunąć możesz tak:
[php:1:6c7652cdfd]
$string = str_replace("n", "$wpis");
[/php:1:6c7652cdfd]
Znaki końca lini to:
nr, n lub r
Grzesiek
albo inaczej, za pomocą funkcji trim (przed chwilą to znalazłem biggrin.gif )
http://www.php.net/manual/pl/function.trim.php
Wiktor
Niestety nic nie dziala sad.gif((

Ostateczny kod wyglada tak:
$plik = file("bazaDL.txt");
$ilosc_wpisow = count($plik);
for($i=1; $i<$ilosc_wpisow; $i++)
{
list($plik[$i][1], $plik[$i][2], $plik[$i][3], $plik[$i][4], $plik[$i][5], $plik[$i][6]) = explode(";", $plik[$i]);
}

for($j = 1; $j <= 9; $j++)
{
for($w = 1; $w <=6; $w++)
{
print("$plik[$j][$w] ");
}
print("<br>");
}

A w pliku bazaDL.txt jest tak:

;8;12;31;39;43;45
;5;10;11;22;25;27
;18;19;20;26;45;49
;2;11;14;37;40;45
;8;10;15;35;39;49
;24;26;31;35;43;47
;13;20;23;29;38;44
;8;13;15;22;38;47
;3;10;27;29;34;42
;4;5;6;13;23;25

Prosze pomozcie mi z tym...

W przegladarce wyswietlaja sie rozne "krzaczki"... probowalem uzyc trim() ale jeszcze wiecej krzeczkow bylo.
Pomozcie
FiDO
[php:1:4119d394f4]<?php
$a = Array();

$plik = file("bazaDL.txt");
$ilosc_wpisow = count($plik);
for($i=0; $i<$ilosc_wpisow; $i++)
$a[$i] = explode(";",trim($plik[$i]," rn;"));

for($i = 0; $i < $ilosc_wpisow; $i++)
{
for($j = 0; $j < 6; $j++)
echo $a[$i][$j]." ";
echo "<br>n";
}
?>[/php:1:4119d394f4]
Wiktor
Dzieki dziala!!!
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.