Witam wszystkich, chciałbym poprosić o pomoc w sprawdzeniu i jeżeli można poprawieniu kodu.
Chciałem osiągnąć: Otworzyć plik txt, sprawdzić czy w danej lini występuje konkretny znak, jeżeli występuje to jego wartość wpisać do tabeli.
Napisałem taki kod:
if ($_POST){
$file = fopen($_POST["plikdootwarcia"], "r");
$tablicaznakow = array('A', 'B', 'C', 'D'); // Pewnie można pobrać te wartości z tabeli $wartosci, ale niewiem jeszcze jak.
$wartosci = array(
"A" => array(),
"B" => array(),
"C" => array(),
"D" => array()
);
while(!feof($file)){
$linia = fgets($file); // Przykładowa linia wygląda: A88 C44.65 D01
foreach ($tablicaznakow as $znak){
if(strpos($linia, $znak) !== false){
$poczatek = strpos($linia, $znak);
if(strpos($linia, ' ', $poczatek) !== false) {
$koniec = strpos($linia, " ", $poczatek);
}
elseif(strpos($linia, "\n", $poczatek) !== false) {
$koniec = strpos($linia, "\n", $poczatek );
}
$wartosci[$znak][] = (float)substr($linia, $poczatek + 1, $koniec - $poczatek); // Niektóre wartości chciałem później zmieniać (dodawać lub odejmować), bez (float) dostawałem błąd, że wartość nie jest liczbą.
}
else {
$wartosci[$znak][] = null; // Bez tego miałem nierówną liczbę wierszy, w zależności których znaków było więcej
}
}
}
fclose($plikdootwarcia);
$liczba_wierszy = count($wartosci['G']);
}
W wampie wszystko działa, ale po wgraniu na serwer dostaje komunikat:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 33554440 bytes) in /home/wlasnecn/domains/wlasnecnc.vxm.pl/public_html/index2.php on line 58
Linia 58 to:
$wartosci[$znak][] = (float)substr($linia, $poczatek + 1, $koniec - $poczatek);
Dzięki za pomoc.