Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Potrójny foreach...
franz87
post 18.02.2013, 14:13:56
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

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


Witam mam tablicę takiego typu:

$result[0][0]= array(
'user'=>'franz87',
'data'=>'31.08.2012',
'czas'=>'14:02:31',
);
Nie potrafię wyświetlić tego w foreach. Wcześniej miałem sytuację, że po $result był tylko jeden index i to jeszcze ogarniałem, teraz nie umiem wyświetlić tablicy za pomocą foreach'ów.
Jeżeli ktoś wie jak to wyświetlić proszę o pomoc.
Go to the top of the page
+Quote Post
jacek21
post 18.02.2013, 14:31:24
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


  1. foreach ($result as $key => $value) {
  2. echo $value[0]['user']; //wyswietlu usera 'franz87'
  3. }


to ci wyświetli usera, może poczytaj więcej na temat tablic będziesz wiedział jak się z nimi obchodzić: http://kursphp.com/tablice_wielowymiarowe.php
Go to the top of the page
+Quote Post
franz87
post 18.02.2013, 17:25:19
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

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


Cytat(jacek21 @ 18.02.2013, 14:31:24 ) *
  1. foreach ($result as $key => $value) {
  2. echo $value[0]['user']; //wyswietlu usera 'franz87'
  3. }


to ci wyświetli usera, może poczytaj więcej na temat tablic będziesz wiedział jak się z nimi obchodzić: http://kursphp.com/tablice_wielowymiarowe.php



Twój kod nie wyświetli tego co chce.
Zauważ, że przy $result mam podwójnie [].
$result[index_1] [index_2] = array(asocjacyjna).

Tak działała moja pętla foreach dla tablicy $result[] = array(asocjacyjna)
  1. foreach ($tablica_danych as $klucz => $wartosc)
  2. {
  3. foreach ($tablica_danych[$klucz] as $klucz2 => $wartosc2)
  4. {echo " <green>".$wartosc2."</green>";}
  5. echo "<br>";
  6. }


Po czym dodałem jeszcze jeden index tablicy $result[] []= array(asocjacyjna) i już nie wiem jak przerobić powyższą pętle.






Przykład elementów mojej tablicy:
  1. $result[0][0]= array(
  2. 'user'=>'franz87',
  3. 'data'=>'22.10.13',
  4. 'czas'=>'13:00:00',
  5. 'cena'=>'5,00',
  6. );
  7. $result[0][1]= array(
  8. 'user'=>'franz87',
  9. 'data'=>'22.10.13',
  10. 'czas'=>'13:00:00',
  11. 'cena'=>'5,00',
  12. );
  13. $result[0][2]= array(
  14. 'user'=>'franz87',
  15. 'data'=>'22.10.13',
  16. 'czas'=>'13:00:00',
  17. 'cena'=>'5,00',
  18. );
  19. $result[0][3]= array(
  20. 'user'=>'franz87',
  21. 'data'=>'22.10.13',
  22. 'czas'=>'13:00:00',
  23. 'cena'=>'5,00',
  24. );
  25.  
  26.  
  27. $result[1][0]= array(
  28. 'user'=>'franz87',
  29. 'data'=>'22.10.13',
  30. 'czas'=>'13:00:00',
  31. 'cena'=>'5,00',
  32. );
  33. $result[1][1]= array(
  34. 'user'=>'franz87',
  35. 'data'=>'22.10.13',
  36. 'czas'=>'13:00:00',
  37. 'cena'=>'5,00',
  38. );
  39. $result[1][2]= array(
  40. 'user'=>'franz87',
  41. 'data'=>'22.10.13',
  42. 'czas'=>'13:00:00',
  43. 'cena'=>'5,00',
  44. );
  45. $result[1][3]= array(
  46. 'user'=>'franz87',
  47. 'data'=>'22.10.13',
  48. 'czas'=>'13:00:00',
  49. 'cena'=>'5,00',
  50. );
  51.  
Go to the top of the page
+Quote Post
Evinek
post 18.02.2013, 17:57:48
Post #4





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


http://php.net/manual/en/control-structures.foreach.php

  1. foreach ($result as $result2) {
  2. foreach ($result2 as $result3) {
  3. echo $result3['user']; //itp.
  4. }
  5. }


Tak chyba powinno działać.
Go to the top of the page
+Quote Post
franz87
post 18.02.2013, 18:17:51
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

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


Cytat(Evinek @ 18.02.2013, 17:57:48 ) *
http://php.net/manual/en/control-structures.foreach.php

  1. foreach ($result as $result2) {
  2. foreach ($result2 as $result3) {
  3. echo $result3['user']; //itp.
  4. }
  5. }


Tak chyba powinno działać.



Evinek to jest najbliższe temu co chcę osiągnąć, z tym, że chcę to wyświetlić bez potrzeby pisania ['user'] itd.
Poprostu daję tablicę, i wyświetla mi wszystko, bez potrzeby pisania "z palca" elementów asocjacyjnych.
Go to the top of the page
+Quote Post
jacek21
post 18.02.2013, 18:20:09
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


Cytat(Evinek @ 18.02.2013, 17:57:48 ) *
http://php.net/manual/en/control-structures.foreach.php

  1. foreach ($result as $result2) {
  2. foreach ($result2 as $result3) {
  3. echo $result3['user']; //itp.
  4. }
  5. }


Tak chyba powinno działać.


No to mnie ubiegłeś smile.gif
Dodam, że ta pętla działa identycznie jak wszystkie inne czyli trzeba było zagniezdzić. Bardziej to widać chyba na pentli for:

  1. $pierwszy= count($result[0]); //rozmiar 1 wymiaru
  2. $drugi= count($result[0][0]); // rozmiar 2 wymiaru
  3. for($i=0; $i<$pierwszy; $i++){
  4. for($j=0; $j<$drugi; $j++){
  5. echo $result[$i][$j]['user']."<br />";
  6. }
  7. }
  8.  


tak samo dzieje się to na pętli foreach tylko nie trzeba liczyć ile dany wymiar zawiera 'elementów'.
Go to the top of the page
+Quote Post
Evinek
post 18.02.2013, 18:36:31
Post #7





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


  1. foreach ($result as $result2) {
  2. foreach ($result2 as $result3) {
  3. foreach ($result3 as $key=>$value){
  4. echo $key.' => '.$value;
  5. }
  6. }
  7. }


Ten post edytował Evinek 18.02.2013, 18:36:44
Go to the top of the page
+Quote Post
cudny
post 18.02.2013, 21:47:19
Post #8





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


A to i ja dam gotowca smile.gif

Poniższe zadziała nie zależnie od tego jakie jest zagnieżdżenie, możesz mieć $result[][][][][][][] = array('cokolwiek'=>'value');

  1. function res($result) {
  2. if(isset($result[0])) {
  3. $len = count($result);
  4. for($i=0;$i<$len;$i++) {
  5. res($result[$i]);
  6. }
  7. } else {
  8. foreach($result as $ind => $val) {
  9. echo $ind.' '.$val.'<br />';
  10. }
  11. }
  12. }
  13. res($result);


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
franz87
post 18.02.2013, 22:13:00
Post #9





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

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


Dzięki za wszystkie odpowiedzi.
Ostatni szczególnie przydatny smile.gif
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 Wersja Lo-Fi Aktualny czas: 10.05.2024 - 02:00