Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z pętla foreach
Forum PHP.pl > Forum > Przedszkole
MuMiN19871023
Witajcie.

Męczę się od dwóch godzin z pętlą foreach i nie wiem jak to rozwiązać. W pierwszej kolejności przedstawie mój kod:

  1. <?
  2. $tablica = array(
  3. "tab1" => array(
  4. "30" => array("13.25","26.5","39.75","53","66.25","79.5","92.75","106","119.25","132.5","145.75","159","172.25","185.5","198.75","212","225.25","238.5","251.75","265","278.25","291.5","304.75","318","331.25","344.5","357.75","371","384.25","397.5"),
  5. "31" => array("13.4","26.8","40.2","53.6","67","80.4","93.8","107.2","120.6","134","147.4","160.8","174.2","187.6","201","214.4","227.8","241.2","254.6","268","281.4","294.8","308.2","321.6","335","348.4","361.8","375.21","388.61","402.01")
  6. ),
  7. "tab2" => array(
  8. "30" => array("13.25","26.5","39.75","53","66.25","79.5","92.75","106","119.25","132.5","145.75","159","172.25","185.5","198.75","212","225.25","238.5","251.75","265","278.25","291.5","304.75","318","331.25","344.5","357.75","371","384.25","397.5"),
  9. "31" => array("13.4","26.8","40.2","53.6","67","80.4","93.8","107.2","120.6","134","147.4","160.8","174.2","187.6","201","214.4","227.8","241.2","254.6","268","281.4","294.8","308.2","321.6","335","348.4","361.8","375.21","388.61","402.01")
  10. ),
  11. );
  12. ?>


Mianowicie mam dwie tablice główne "tab1" oraz "tab2". Z tablicy głównej "tab1" z podtablicy nr 30 chcę uzyskać daną wartość. Z tablicy głównej "tab2" z podtablicy 31 chce uzyskać daną wartość. Czy ktoś pomoże? W PHP programuje od kilku lat, ale przyznam szczerze, że pierwszy raz mam z tym problem i aż wstyd się do tego przyznać.
castagir
Musisz po prostu dodać indexy, z której tablicy chcesz otrzymać dane, Spróbuj tego:

  1. foreach($tablica['tab1']['30'] as $t){
  2. echo $t;
  3. }

$t powinna zawierać po kolei każdą wartość z tablicy trzeciego poziomu, jakim jest ['30']. To samo zrób dla ['tab2']['31']
MuMiN19871023
Cytat(castagir @ 21.05.2016, 12:56:41 ) *
Musisz po prostu dodać indexy, z której tablicy chcesz otrzymać dane, Spróbuj tego:

  1. foreach($tablica['tab1']['30'] as $t){
  2. echo $t;
  3. }

$t powinna zawierać po kolei każdą wartość z tablicy trzeciego poziomu, jakim jest ['30']. To samo zrób dla ['tab2']['31']


Rozumiem, że po prostu trzeba dać kolejną pętlę, aby wyciągnąć daną wartość ze sposobu, który zaproponowałeś? Twój kod działa, muszę tylko wyciągnąć teraz daną wartość smile.gif Wielkie dzięki smile.gif
castagir
Pętle bez problemu można zagrznieżdżać w każdej kolejnej wielokrotnie.
W przypadku Twojej tabeli będzie to wyglądać tak:

  1. foreach($tablica as $ t1){
  2. // pętla wykonuje przejście po podtablicach 'tab1' i 'tab2'
  3. foreach($t1 as $t2){
  4. // Przejście po podtablicach '30' i '31'
  5. foreach($t2 as $liczba){
  6. // dopiero w tym miejscu zostaną wyciągnięte liczby z tablic ostatniego poziomu
  7. }
  8. }
  9. }

Pamiętaj aby nie pogubić się zbytnio i jeżeli masz zamiar dalej operować na danych wyciąganych z najniższego poziomu tablicy, musisz je wyodrębnić w odpowiedni sposób.

foreach to prosta do wywołania pętla, która wywołuje po kolei, lecz dla lepszej kontroli zalecam używanie tablicy for, a dane w tablicach umieszczac z indexami numerycznymi

Pozdrawiam!
MuMiN19871023
Dzieki. Pomogłes mi smile.gif Temat do zamknięcia.
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.