Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odnajwydanie wartości wg klucza
Forum PHP.pl > Forum > Przedszkole
Crisu
Witam!
Czy istnieje w php funkcja która wykonuje następujące zadanie.
Założmy że mamy plik tekstowy następujacego formatu:

aaa=0,1,1,1,1,0
bbb=0,3,1,3,4,3
ccc=1,1,1,1,1,1
ddd=0,0,0,0
...
..

Teraz po przekazaniu nazwy wiersza np(aaa) do funkcji i wskazaniu pliku chciałbym odnalazła mi dany rekord i zwrocil wartosci.
Mam nadzieje ze wiadomo o co chodzi smile.gif
ayeo
  1. <?php
  2. function parse_txt($file_name)
  3. {
  4.  $result = array();
  5.  $file = file($file_name);
  6.  $pattern = '#^(.+?)=((d|,)+)#'; //forum pewnie wytnie backslashe :)
  7.  
  8.  foreach($file as $line) {
  9. preg_match($pattern, $line, $match);
  10. $result[$match[1]] = $match[2]; 
  11.  }
  12.  return $result;
  13. }
  14.  
  15. $a = parse_txt('Twoj_plik.txt');
  16. print_r($a);
  17. ?>


Wynik:
Kod
Array ( [aaa] => 0,1,1,1,1,0 [bbb] => 0,3,1,3,4,3 [ccc] => 1,1,1,1,1,1 [ddd] => 0,0,0,0 )


Pisane z palucha i mogą być błędy, ale jakoś tak to widzę. Najlepiej zrobisz jednak jak poczytasz o funkcji parse_ini_file() smile.gif W sumie robi to samo....

EDIT: poprawiłem pattern, teraz działa na 100% poprawnie, pozdrawiam...

Przerobiłem to trochę. Teraz nazwa pliku jest na sztywno zapisana w funkcji. Funkcja jako parametr pobiera nazwę klucza, który chcesz pobrać (czyli tak jak chciałeś/chciałaś) i zwraca tablicę z poczczególnymi wartościami dla klucza. Czyli dla "aaa" będzie to:
Kod
Array  (      [0] => 0      [1] => 1      [2] => 1      [3] => 1      [4] => 1      [5] => 0  )

Tu masz kod:
  1. <?php
  2. function getValueByKey($key)
  3. {
  4.  $file_name = 'plik.txt'; // nazwa Twojego pliku
  5.  static $file; 
  6.  $result = array();
  7.  if (!$file) $file = file($file_name);
  8.  
  9.  $pattern = '#^(.+?)=((d|,)+)#'; //przed d powinien być backslash 
  10.  
  11.  foreach($file as $line) {
  12. preg_match($pattern, $line, $match);
  13. $result[$match[1]] = $match[2]; 
  14.  }
  15.  return explode(',',$result[$key]);
  16. }
  17.  
  18. print_r(getValueByKey('aaa'));
  19. ?>
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.