Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] funkcja odczytujaca z pliku i zapisujaca do tabeli
Forum PHP.pl > Forum > Przedszkole
gosc
Witam, proszę o odpowiedź, czy jest funkcja która mogłaby odczytać z pliku txt dane i wpisać do tablicy ? Wiem, że jest explode() i to generalnie pasuje do odpowiedzi na moje pytanie, ale chciałbym aby funkcja ta zapisywała pierwszy wyraz jako klucz, a drugi jako wartość. Powiedzmy że w pliku txt w jednej linii mam dwie wartości rozdzielone jakimś znakiem ( np. : ) i funkcja zapisywałaby to co przed znakiem : jako klucz, a to co po znaku : jako wartość. Tak, aby potem korzystając z funkcji array_search mógł odszukać w tabeli klucz podając funkcji wartość. Mam nadzieję, że w miarę wyraźnie opisałem jakiej funkcji poszukuję.
piotrooo89
  1. <?php
  2. $plik = file('dane.txt');
  3.    for($i = 0; $i <= count($plik); $i++)
  4.    {
  5.        echo $plik[$i];
  6.        $p=explode(':', $plik[$i]);
  7.        $tab=array($p[0] => $p[1]);
  8.        print_r($tab);
  9.    }
  10. ?>


coś takiego?
gosc
piotrooo89 - nie do końca ponieważ to co uzyskuję wygląda tak : Array ( [koment1] => 1 ) Array ( [koment2] => 2 ) Array ( [koment3] => 3 ) Array ( [koment4] => 4 ) Array ( [koment5] => 5 ) Array ( [] => )
a powinno tak Array ( [koment1] => 1 , [koment2] => 2 , [koment3] => 3 , [koment4] => 4 , [koment5] => 5 ), ale użyta na początku funkcja file() nasunęła mi pewną myśl, a mianowicie, czy nie wydajniej byłoby za pomocą file zapisywać całe linie do tabeli, po czym przeszukać ją i dopiero w przypadku znalezionego wiersza wykonać explode i potem dopiero operować na zwróconych danych ? Wydaje mi się, że to będzie bardziej wydajne.
marcio
  1. <?php
  2. $plik = file('dane.txt');
  3.    for($i = 0; $i <= count($plik); $i++)
  4.    {
  5.        echo $plik[$i];
  6.        $p = explode(':', $plik[$i]);
  7.        $tab[$p[0]] = $p[1];
  8.        print_r($tab);
  9.    }
  10. ?>
piotrooo89
jestes dużo możliwości możesz spróbować ale nie wiem czy do końca będzie to aż tak wydajne.
gosc
marcio - dzieki za kod, ale z jakiegoś powodu taki kawałek nie zwraca nic: echo $klucz = array_search('2', $tab); a według mnie powinien, mimo wszystko dzięki, że Ci się chciało smile.gif
piotrooo89 - Tobie również dziękuje, pchnąłeś to co chciałem napisać do przodu smile.gif a jak będzie z wydajnością przekonam się w praktyce.
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.