Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
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ść (IMG:style_emoticons/default/smile.gif) Wielkie dzięki (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) Temat do zamknięcia.
Go to the top of the page
+Quote Post

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.09.2025 - 23:43