Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]N zmiennych dla list();
Forum PHP.pl > Forum > Przedszkole
Rivia Luthine
Witam po raz 2 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;
skowron-line
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'
Nattfarinn
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? 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 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ć. 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 winksmiley.jpg.
PS2: Z tablicami i iteracja jest łatwiejsza i życie prostsze... Zalet jest mnóstwo a wad bardzo niewiele winksmiley.jpg
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.