Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z pętla foreach
MuMiN19871023
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2015

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


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ć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
castagir
post
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


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']
Go to the top of the page
+Quote Post
MuMiN19871023
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2015

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


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
Go to the top of the page
+Quote Post
castagir
post
Post #4





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


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!

Ten post edytował castagir 21.05.2016, 12:35:54
Go to the top of the page
+Quote Post
MuMiN19871023
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2015

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


Dzieki. Pomogłes mi smile.gif Temat do zamknięcia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:26