Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tablice wielowymiarowe - dynamicznie
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Witam,
chciałem zrobić tablice wymiarowe generowane dynamicznie przez pętlę. Wygląda ona tak:
  1. <?php
  2. function tematy_tablica() {
  3. $query = "SELECT * FROM tematy;";
  4. $make = mysql_query($query);
  5. $i = 0;
  6. while ($wynik = mysql_fetch_row($make)) {
  7. $tablica[$i][0] = $wynik[2];
  8. $tablica[$i][1] = $wynik[3];
  9. $i++;
  10. }
  11. return $tablica;
  12. }
  13. ?>

Można łatwo zobaczyć, że "pierwszy" wymiar tablicy musi być tworzony przez zmienną, która jest zwiększana po każdym kółku pętli. Musiałem tak zrobić, ponieważ:
  1. <?php
  2. $tablica[][0] = $wynik[2];
  3. $tablica[][1] = $wynik[3];
  4. ?>

Dawało błędy. Podejrzewam, że na przykład przy pierwszym zakręceniu tej pętli zmienne wyglądały w ten sposób:
  1. <?php
  2. $tablica[0][0] = $wynik[2];
  3. $tablica[1][1] = $wynik[3];
  4. ?>

Czy jest jakaś możliwość dynamicznego generowania tablic, ale bez użycia tej zmiennej $i ? Nie wiem dlaczego, ale bardzo mi się ona nie podoba. Pewnie dlatego, że zmienne z liczbą bardziej pasują do pętli for. Więc jeśli byłby sposób, żeby usunąć tą zmienną z pętli....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mlattari
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

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


Ja bym to rozwiązał tak....

  1. <?php
  2. /* Przypisanie wyników zapytania do tablicy $item   */
  3. $result = mysql_query ($query);
  4. $record=0;
  5. while ($row=mysql_fetch_row($result))
  6.  {
  7.   for ($c=0;$c<mysql_numfields($result);$c++)
  8.    {
  9.       $item[$record][$c]=$row[$c]; // Przypisuje dane pobrane z bazy do tablicy $item
  10.      }
  11.    $record++;
  12.   }
  13.  mysql_free_result($result); // :-)
  14. ?>


Ten post edytował mlattari 7.03.2009, 04:02:51
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 15:18