Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]N zmiennych dla list();
Rivia Luthine
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.09.2009

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


Witam po raz 2 (IMG:style_emoticons/default/winksmiley.jpg)

Tym razem mam problem, gdyż nie wiem w jaki sposób go ugryźć.

Mając tabele o ilości kolumn stałej np. 4
  1. x|000|text |ble
  2. |001|texta |ble
  3. |002|textacd|ble
  4. x|003|tet |ble

PS: tabela w takiej formie znajduje się w pliku, plik jest odczytywany linia po linii do zmiennej line[ $i ];

to łatwo je rozdziele
  1. list( $empty[ $i ], $id[ $i ], $text[ $i ], $something[ $i ] ) = explode( '|', line[ $i ] );

Tylko w jaki sposób władować N zmiennych (mogą być takie same tzn zmienna1,2,3... ponumerowane), jeśli tabele będą przyjmować różne ilości kolumn?

PS 2: w pierwszej linii zapewne będę trzymała nazwy kolumn, gdyby w taki sposób nazywać zmienne;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


http://pl.php.net/manual/pl/function.extract.php ?
  1.  
  2. extract(array('foo', 'bar'), EXTR_PREFIX_ALL, 'var');
  3.  
  4. print_r(get_defined_vars()); // Reveals $var_0 = 'foo' and $var_1 = 'bar'


Ten post edytował skowron-line 3.11.2009, 09:38:44
Go to the top of the page
+Quote Post
Nattfarinn
post
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


Cytat(Rivia Luthine @ 3.11.2009, 07:36:13 ) *
PS 2: w pierwszej linii zapewne będę trzymała nazwy kolumn, gdyby w taki sposób nazywać zmienne;

Skoro dopiero plik miałby Ci podpowiedzieć jakich zmiennych używać, to w jaki sposób napisałabyś resztę kodu? (IMG:style_emoticons/default/smile.gif)

Cytat(Rivia Luthine @ 3.11.2009, 07:36:13 ) *
Tylko w jaki sposób władować N zmiennych (mogą być takie same tzn zmienna1,2,3... ponumerowane), jeśli tabele będą przyjmować różne ilości kolumn?

A nie lepiej użyć tablicy wielowymiarowej? Przecież, skoro zależy Ci tylko i wyłącznie na tym, by wczytać dane z pliku i na nich operować, a jedynym wyznacznikiem tych danych jest numer kolumny w której się znajduje, to tablica jest przecież elementem który do takich celów został właśnie stworzony (IMG:style_emoticons/default/smile.gif) .

  1. $plik = file('twoj_plik_csv.txt');
  2. $dane = array();
  3. foreach ( $plik as $number => $line ) {
  4. $dane[] = explode('|', $line);
  5. }

No i teraz przecież łatwo dostaniesz się do odpowiedniej linii i wartości kolumny (obrazowo):

  1. $linia = 12;
  2. $kolumna = 3;
  3. $to_co_chce = $dane[$linia][$kolumna];

Trzeba tylko pamiętać, że klucze tablicy liczone są od 0, więc odnoszenie sie do klucza 3 de facto będzie prowadziło do kolumny czwartej [0, 1, 2, 3] (sytuacja ma się analogicznie dla linii). Da się to oczywiście obejść, ale... po co. Taka jest specyfika tablic i tego trzeba się trzymać, a nie obchodzić. (IMG:style_emoticons/default/smile.gif)

PS: Od takich operacji na plikach (zwanych plikami CSV) są odpowiednie funkcje (fgetcsv() i fputcsv()) ale nie zagłębiając się w szczegóły, można sobie bez nich poradzić nie najgorzej (IMG:style_emoticons/default/winksmiley.jpg) .
PS2: Z tablicami i iteracja jest łatwiejsza i życie prostsze... Zalet jest mnóstwo a wad bardzo niewiele (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Nattfarinn 3.11.2009, 09:50:54
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: 23.08.2025 - 17:55