Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odnajwydanie wartości wg klucza
Crisu
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 11.08.2006

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


  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() (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował ayeo 15.12.2007, 16:28:25
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 18:31