Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przjscia po tablicach i cykliczne akcje na ich zawartosci
Forum PHP.pl > Forum > PHP
mlody1982
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źć??
Piniek
Proszę o wstawienie kodu php w odpowiedni znacznik bbcode.
Zyx
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.
mlody1982
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
Zyx
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...
mlody1982
Nie wszystkie poprzednie elementy tylko poprzednie z tego samego index-u pierwszego wymiaru...
Kod sformatowany...
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.