Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tablica asocjacyjna i pętla
Forum PHP.pl > Forum > Przedszkole
szuki
Witam (wiem, że temat był wałkowany setki razy - jestem początkujący i widać coś robię źle) mam tablice asocjacyjną w takiej postaci:


  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [array-name] => Array
  6. (
  7. [0] => 11111111
  8. [1] => Czerwony
  9. )
  10.  
  11. )
  12.  
  13. [1] => Array
  14. (
  15. [array-name] => Array
  16. (
  17. [0] => 22222222
  18. [1] => Czarny
  19. )
  20.  
  21. .......
  22.  
  23. )


Liczba wyników nie jest określona. Chciałbym wyświetlić wszystkie kolory, które przechowywane są w tablicy.
Mam pętlę, jednak nie zwraca mi wartości, tylko dodatkowy tekst echo.


  1. foreach ($color_info as $color )
  2. {
  3. echo $color['1'] . ' - kolor towaru</br>';
  4. }


Otrzymuję w efekcie:

- kolor towaru
- kolor towaru
- kolor towaru
- kolor towaru

Przypuszczam, że błąd tkwi w $color_info.

Pewnie pownienem zrobić pętle w pętli, albo najpierw przez count zliczyć liczbę wyników i potem $i ++ dla color_info.
Próbowałem, ale jednak nic. Więc proszę o pomoc.

Pozdrawiam szuki.
Arcioch
Musisz użyć zagłebionej pętli foreach wink.gif

  1. foreach($color_info as $color){
  2.  
  3. //to zrobi obrót po Twoich wiekich arraych z mniejszymi arrayami
  4.  
  5. foreach($color as &key => $c){
  6. echo $key; //wypisze to co w Twojej tabelce masz nazwane array-name
  7. echo $c[0]; //wypisze numerki
  8. echo $c[1];//wypisze kolor
  9. }
  10.  
  11. }


Powinno zadziałać wink.gif
szuki
Dzięki, mam jeszcze jeden problem.


Załóżmy, że $c[3] zawiera jakąś liczbę (nie zawsze tą samą), teraz chciałbym je wszystkie dodać. Zrobiłem kolejną pętlę:

  1. $array_size = count($ile_sztuk); //Tutaj sprawdzam ile razy wykonała się Twoja pętla
  2.  
  3. for($i = 0; $i <= $array_size; $i++) //Wykonuję ją aż do otrzymania prawdy
  4. {
  5. $kupionych_sztuk++;
  6. }


Cały kod:

  1. foreach($color_info as $color){
  2.  
  3. foreach($color as &key => $c){
  4.  
  5. $ile_sztuk = $c[3];
  6. echo $c[0]; //wypisze numerki
  7. echo $c[1];//wypisze kolor
  8. }
  9.  
  10. $array_size = count($ile_sztuk); //Tutaj sprawdzam ile razy wykonała się Twoja pętla
  11.  
  12. for($i = 0; $i <= $array_size; $i++) //Wykonuję ją aż do otrzymania prawdy
  13. {
  14. $kupionych_sztuk++;
  15. }
  16.  
  17.  
  18. }
  19.  


No ale otrzymuje złe wyniki, co robię nie tak?
Z góry dzięki za pomoc.
Arcioch
Pokaż cały Twój kod który używasz do stworzenia tablicy wink.gif To co piszesz jest troszkę bez sensu i ciężko z tego wywnioskować co chcesz osiągnąć. To Twoje $c[3] musisz zdefiniować podczas tworzenia tablic a nie podczas foreachowania wink.gif
szuki
Może źle się określiłem, zależy mi po prostu żeby za każdym wykonaniem pętli sumowała mi się wartość.

Jeżeli tablica wygląda tak:

[MYSQL] pobierz, plaintext
  1. [0] => Array
  2. (
  3. [array-name] => Array
  4. (
  5. [0] => 11111111
  6. [1] => Czerwony
  7. [2] => 14
  8. )
  9. )
  10. [1] => Array
  11. (
  12. [array-name] => Array
  13. (
  14. [0] => 11111111
  15. [1] => Niebieski
  16. [2] => 6
  17. )
  18. )
[MYSQL] pobierz, plaintext


To po wykonaniu pętli chciałbym mieć dodane wszystkie wartości [2], czyli dla tej tablicy wynik byłby 20.
Arcioch
Robisz po prostu tak wink.gif

  1. $suma = 0;
  2.  
  3. foreach($color_info as $color){
  4.  
  5. //to zrobi obrót po Twoich wiekich arraych z mniejszymi arrayami
  6.  
  7. foreach($color as &key => $c){
  8. echo $key; //wypisze to co w Twojej tabelce masz nazwane array-name
  9. echo $c[0]; //wypisze numerki
  10. echo $c[1];//wypisze kolor
  11. echo $c[2];//wypisze inne numerki
  12.  
  13. $suma = $suma + $c[2];
  14. }
  15.  
  16. }
  17.  
  18. echo $suma;
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.