Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tablice dwuwymiarowe, czyli skrótowe odwoływanie się do list() i each()
f#a#oo
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.06.2011

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


Witam wszystkich pierwszym postem. Właśnie raczkuję z php, przerabiam sobie pewien podręcznik i wiedzę uzupełniam manualem, ale… nie mogę zrozumieć, dlaczego poniższy kod z podręcznika działa. Siedzę nad tym już kilkadziesiąt minut.

Przykład 1 (podręcznik).

  1. $produkty = array (array('OPO', 'Opony', 100),
  2. array('OLE', 'Olej', 10),
  3. array('SWI', 'Swiece Zaplonowe', 4));
  4.  
  5.  
  6.  
  7. for($rzad = 0; $rzad < 3; $rzad++) {
  8. while (list($klucz, $wartosc) = each($produkty[$rzad])) {
  9. echo "| $wartosc ";
  10. }
  11. echo ' |</br>';
  12. }



Chodzi mi głównie o działanie list() i each() w tabelach dwuwymiarowych.
Dlaczego po wpisaniu echo "| $wartosc "; wyświetla się cały rząd, tzn. zawartość tablicy drugiego stopnia?


W manualu (http://pl.php.net/manual/pl/function.each.php) jest:

Przykład 2.

  1. $owoce = array('a' => 'jabłko', 'b' => 'banan', 'c' => 'truskawka');
  2. reset ($owoce);
  3. while (list ($klucz, $wartosc) = each ($owoce)) {
  4. echo "$klucz => $wartosc\n";


Zawartość tablicy jest wywoływana przy pomocy dwóch zmiennych, każda po imieniu.
W wypadku tablicy dwuwymiarowej z przykładu 1 wystarczy tylko $wartosc? Po co definiowano $klucz skoro nie ma do niego odwołania? W przykładzie 1 list() wyświetla wszystko automatycznie, a w przykladzie 2 trzeba to dokładnie określać? Dlaczego?

Będę wdzięczny za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zordon
post
Post #2





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


poczytaj dokładnie w manualu o list() i each().
W pierwszym przykładzie w każdej iteracji each() zwraca tablicę w stylu:
[1] => 'OPO'
[value] => 'OPO'
[0] => 0
[key] => 0
po czym przesuwa wskaźnik tablicy na nastepny element.

list() zapisuje do zmiennych wartości tablicy o kluczach numerycznych. Możesz nie chcieć otrzymać "późniejszych" elementów, ale ich kolejność ma znaczenie więc aby dobrać się do "późniejszych" musisz najpierw przypisać do czegoś "wcześniejsze" lub zaznaczyć, że tam są zostawiając puste miejsce i przecinek. Pierwszy przykład powinien działać również w postaci:

  1. $produkty = array (array('OPO', 'Opony', 100),
  2. array('OLE', 'Olej', 10),
  3. array('SWI', 'Swiece Zaplonowe', 4));
  4.  
  5.  
  6.  
  7. for($rzad = 0; $rzad < 3; $rzad++) {
  8. while (list(, $wartosc) = each($produkty[$rzad])) {
  9. echo "| $wartosc ";
  10. }
  11. echo ' |</br>';
  12. }



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: 24.12.2025 - 03:43