Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tablica asocjacyjna i pętla
szuki
post 21.09.2012, 23:27:16
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

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


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.

Ten post edytował szuki 21.09.2012, 23:30:50
Go to the top of the page
+Quote Post
Arcioch
post 22.09.2012, 06:11:13
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


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
Go to the top of the page
+Quote Post
szuki
post 22.09.2012, 12:35:40
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

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


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.
Go to the top of the page
+Quote Post
Arcioch
post 23.09.2012, 12:34:09
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


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
Go to the top of the page
+Quote Post
szuki
post 23.09.2012, 14:47:27
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

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


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.

Ten post edytował szuki 23.09.2012, 14:48:08
Go to the top of the page
+Quote Post
Arcioch
post 24.09.2012, 09:41:51
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


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;
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: 26.04.2024 - 18:12