Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapełnianie tablic dwuwymiarowych
Forum PHP.pl > Forum > PHP
MySQL
Chcę ze zbioru wynikowego zapytania zrobić tablicę (a w zasadzie dwie tablice) dwuwymiarową (bo będę często z tych danych korzystał).

W tej chwili zapełniam tą tablicę w taki sposób ():
  1. $i = 0;
  2. // ...
  3. while(($w = mysql_fetch_row($wyn)) !== false)
  4. {
  5. $users[$i] = array((int)$w[0], $w[1], $w[2], (int)$w[3]);
  6.  
  7. $authorization[$i] = array((int)$w[4], (int)$w[5], (bool)$w[6]);
  8.  
  9. $i++;
  10. }

Ale można też w taki sposób:
  1. $i = 0;
  2. // ...
  3. while(($w = mysql_fetch_row($wyn)) !== false)
  4. {
  5. $users[$i][0] = (int)$w[0];
  6. $users[$i][1] = $w[1];
  7. $users[$i][2] = $w[2];
  8. $users[$i][3] = (int)$w[3];
  9.  
  10. $authorization[$i][0] = (int)$w[4];
  11. $authorization[$i][1] = (int)$w[5];
  12. $authorization[$i][2] = (bool)$w[6];
  13.  
  14. $i++;
  15. }

Jako, że pierwszy raz koduję coś takiego to moje pytanie brzmi:
Czy oba sposoby są dokładnie takie same czy różnią się jakimiś niuansami, a jeżeli tak to jakimi i który sposób jest prawidłowy (albo po prostu lepszy, wydajniejszy)?

PS. Nawet jeżeli istanieje jakaś funkcja PHP, która zamienia zbiór wynikowy (albo wybrane kolumny wyniku) na tablicę dwuwymiarową to pytanie jest i tak aktualne.
PS2. Przy inicjalizowaniu tablicy podczas jej tworzenia to o ile się nie mylę oba zapisy są równoważne. Ale właśnie nie wiem co jeżeli tablica już istnieje a ja chcę dodawać kolejne elementy.
erix
Cytat
Jako, że pierwszy raz koduję coś takiego to moje pytanie brzmi:
Czy oba sposoby są dokładnie takie same czy różnią się jakimiś niuansami, a jeżeli tak to jakimi i który sposób jest prawidłowy (albo po prostu lepszy, wydajniejszy)?

Raczej pozostaje tylko kwestia czytelności. :]

Cytat
PS2. Przy inicjalizowaniu tablicy podczas jej tworzenia to o ile się nie mylę oba zapisy są równoważne. Ale właśnie nie wiem co jeżeli tablica już istnieje a ja chcę dodawać kolejne elementy.

No używasz albo array_push, albo dopisujesz [] na końcu zmiennej. Wszystko w dokumentacji. ;] array
MySQL
A jeszcze jedno póki pamiętam.

Czy można w PHP nadać zmiennej typ array ale tylko nadać, bez jakiejkolwiek inicjalizacji? Oczywiście sposób:
  1. $zmienna = array;
Nie działa. Niby można zrobić to w taki sposób:
  1. $test = array(1);
  2. array_pop($test);
erix
Można. Nie podajesz po prostu wtedy argumentów.
Fantazyn
  1. $zmienna = array();

Coś takiego?

Edit:
erix, trochę złośliwy jesteś : ). Znam wynik swojej odpowiedzi, ale byłeś pierwszy i moja odpowiedź trochę śmiesznie wyszła...
erix
A wyrosną kolce na klawiaturze, jak spróbujesz? Jak nie wywala błędów, to jest ok.

edit@up: wcześniej był tu post autora, ale go skasował tongue.gif
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.