Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przjscia po tablicach i cykliczne akcje na ich zawartosci
mlody1982
post 11.10.2008, 13:29:44
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.03.2006

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


Cześć!
otóż taki kawałek kodu:
  1. <?php
  2. foreach($test as $klucz => $wartosc){
  3.        foreach($wartosc as $kl => $wa){
  4.            print "$klucz $kl $wa <br />";
  5.        }
  6.    }
  7. ?>


daje coś takiego:

149 0 149
149 1 1223726854
149 2 674
149 3 200
149 4 0.119569
149 5 0
149 6 0
149 7 123
149 8 149
149 9 kasia
149 10 40
149 11 200
149 12 149
149 13 1223726466
149 14 1062
149 15 200
149 16 0.005213
149 17 0
149 18 0
149 19 234
149 20 149
149 21 zosia
149 22 40
149 23 200
9 0 9
9 1 1223726856
9 2 672
9 3 200
9 4 1.290006
9 5 0
9 6 0
9 7456
9 8 9
9 9 michał
9 10 40
9 11 200
9 12 9
9 13 1223726466
9 14 1062
9 15 200
9 16 0.062688
9 17 0
9 18 0
9 19 234
9 20 9
9 21 wojtek
9 22 40
9 23 200
136 0 136
136 1 1223726855
136 2 673
136 3 200
136 4 0.163183
136 5 1
136 6 0
136 7 568
136 8 136
136 9 tomek
136 10 40
136 11 200
136 12 136
136 13 1223726466
136 14 1062
136 15 200
136 16 0.042776
136 17 1
136 18 0
136 19 2384
136 20 136
136 21 zuzia
136 22 40
136 23 200
172 0 172
172 1 1223726464
172 2 1064
172 3 200
172 4 0.031857
172 5 0
172 6 0
172 7 35345
172 8 172
172 9 ewa
172 10 40
172 11 200
172 12 172
172 13 1223726838
172 14 690
172 15 200
172 16 0.176117
172 17 0
172 18 0
172 19 34632
172 20 172
172 21 ania
172 22 40
172 23 200

Na czym polega mój problem..? Posłużę się przykładem z indeksem '149'.
jak widzicie wskazuje na 24 elementy. Ilość tych elementów może być różna ale zawsze jest to wielokrotność 12
1 x 12 = 12, 2 x 12 = 24, 3 x 12 = 36 itd...

co 12 trzeba wykonać akcję sprawdzającą przez porównanie, czy te 12 liczb jest poprawnych
co np 24( może być 12, 24, 36 itd) trzeba dodać poprzednie liczby i wyliczyć z nich średnią.
liczą się pozycje w indeksach tzn
  1. <?php
  2. $test[146][4] = '12222455';
  3. $test[146][16] = '66588322';
  4. ?>
czyli co 12 liczba, dodajemy i liczymy średnią.

jakieś pomysły Panowie nie wiem jak to ugryźć??

Ten post edytował mlody1982 12.10.2008, 21:22:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Piniek
post 11.10.2008, 13:31:30
Post #2





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


Proszę o wstawienie kodu php w odpowiedni znacznik bbcode.


--------------------
Go to the top of the page
+Quote Post
Zyx
post 12.10.2008, 08:27:29
Post #3





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Dodaj sobie prosty licznik, który powie Ci, kiedy jesteś przy "co 12 elemencie". Gdy na taki trafisz, resetujesz licznik i wykonujesz akcję:

  1. <?php
  2. $i = 0;
  3. $lastTwelve = array();
  4. foreach($test as $klucz => $wartosc)
  5. {
  6.  foreach($wartosc as $kl => $wa)
  7.  {
  8.    print "$klucz $kl $wa <br />";
  9.    if($i == 11)
  10.    {
  11.       echo 'Wykonaj akcje - ostatnie 12 elementow jest w $lastTwelve <br/>';
  12.       $i = 0; // resetuj licznik
  13.       $lastTwelve = array(); // i tablice
  14.    }
  15.    else
  16.    {
  17.      $i++;
  18.      $lastTwelve[] = &$wa;
  19.    }
  20.  }
  21. }
  22. ?>


Gdyby coś nie działało, po prostu trzeba liczniki wykalibrować, bo pisałem z głowy.

I również proszę o wstawienie kodu PHP w odpowiedni znacznik BBCode.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
mlody1982
post 12.10.2008, 17:05:12
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.03.2006

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


Witam ponownie!

Bardzo fajne rozwiązanie. Dziękuję. Mam tylko jedno pytanie:
Wiem co się dzieje co 12 elementów ale co jak chcę wykorzystać poprzednie np 24 lub 36, 48... elementów?
W jaki sposób to zrobić?

Wydaje mi się że $lastTwelve czyszczone jest co 12 elementów.

Za odpowiedź z góry dziękuję. smile.gif
Go to the top of the page
+Quote Post
Zyx
post 12.10.2008, 19:37:33
Post #5





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Sformatuj kod w pierwszym poście, sformatuj kod w pierwszym poście...

To sobie wyłącz czyszczenie. Zresztą, jeśli chcesz wszystkie poprzednie elementy, to nie musisz tego nawet dodatkowo buforować - wystarczy że jeszcze raz przejedziesz tablicę. Jednak tu też się zastanów. Jeśli potrzebujesz tylko liczyć średnią, możesz to robić w locie i co 12 elementów robić zwykłe podsumowanie:

  1. <?php
  2. $i = 0;
  3. $total = 0;
  4. $sum = 0;
  5. foreach($test as $klucz => $wartosc)
  6. {
  7. foreach($wartosc as $kl => $wa)
  8. {
  9.   print "$klucz $kl $wa <br />";
  10.   $sum += $wa;
  11.   $total++;
  12.   if($i == 11)
  13.   {
  14.      // Sformatuj kod w pierwszym poście, sformatuj kod w pierwszym poście...
  15.   }
  16.   else
  17.   {
  18.     $i++;
  19.   }
  20. }
  21. }
  22. ?>


To tylko kwestia tego, co Ci jest potrzebne.

PS. O sformatowanie kodu źródłowego w pierwszym Twoim poście prosimy Cię nie dlatego, że to lubimy, tylko byś to zrobił i by był porządek. Na razie z rozwiązania wyciąłem tylko jedną linijkę - później może być więcej...

Ten post edytował Zyx 12.10.2008, 19:40:09


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
mlody1982
post 12.10.2008, 21:24:16
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.03.2006

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


Nie wszystkie poprzednie elementy tylko poprzednie z tego samego index-u pierwszego wymiaru...
Kod sformatowany...
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: 24.06.2025 - 21:11