Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Średnia ważona
Ikky
post 22.08.2009, 13:42:47
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

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


mam taką tablice:

  1. $artykuly = array(
  2. 'kategoria1' => array(
  3. 'kategoria_nazwa' => 'kategoria1',
  4. 'artykuly' => array(
  5. 'artykul_nazwa' => 'art1',
  6. 'artykul_ocena' => '5',
  7. 'artykul_waga' => '2'
  8. ),
  9. 'praca_nazwa' => 'art2',
  10. 'artykul_ocena' => '4',
  11. 'artykul_waga' => '3'
  12. )
  13. )
  14. ),
  15. 'kategoria2' => array(
  16. 'kategoria_nazwa' => 'kategoria2',
  17. 'artykuly' => array(
  18. 'artykul_nazwa' => 'art3',
  19. 'artykul_ocena' => '5',
  20. 'artykul_waga' => '4'
  21. )
  22. )
  23. ),
  24. 'kategoria3' => array(
  25. 'kategoria_nazwa' => 'kategoria3',
  26. 'artykuly' => array(
  27. 'artykul_nazwa' => 'art4',
  28. 'artykul_ocena' => '1',
  29. 'artykul_waga' => '3'
  30. )
  31. )
  32. )
  33. );
  34.  


chce obliżyć średnią ocen artykułów dla każdej kategorii

czyli ma to działać tak: artykul1_ocena*artykul1_waga + artykul2_ocena*artykul2_waga ..... / artykul1_waga + artykul2_waga
tylko nie moge przewidziec ile bedzie artykulow :/
jakies pomysly ? jak sie za cos takiego zabrac?

Go to the top of the page
+Quote Post
marcinpruciak
post 22.08.2009, 14:11:09
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


O pętlach słyszał?


--------------------
Go to the top of the page
+Quote Post
_Martin_
post 22.08.2009, 14:26:17
Post #3





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


Ja bym wpętli przetworzył tablice wyciągnał sume ocen i podzielił przez ilosć ocen i gotowe smile.gif


--------------------
Go to the top of the page
+Quote Post
thek
post 22.08.2009, 14:30:45
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




  1. $wyniki = array()
  2. foreach ($artykuly AS $kategoria) {
  3. foreach ($kategoria AS $dane) {
  4. $suma = 0;
  5. $waga = 0;
  6. foreach($dane AS $artykul) {
  7. $suma += $artykul['artykul_ocena'] * $artykul['artykul_waga'];
  8. $waga += $artykul['artykul_waga'];
  9. }
  10. $wyniki[ $dane['kategoria_nazwa'] ] =$suma/$waga;
  11. }
  12. }

Mniej więcej coś takiego.
a) Przelatujesz po każdej kategorii,
cool.gif W każdej kategorii czyścisz zmienną suma i waga,
c) Pobierasz nazwę kategorii,
d) Robisz pętlę po wszystkich artykułach i dodajesz w tej pętli zarówno iloczyny jak i wagi,
e) Tworzysz klucz w tablicy wyników z nazwą kategorii i jako wartość ustawiasz średnią.

Tak mniej więcej wygląda algorytm i na szybko napisany kod. Zaznaczam, że piszę z głowy i nie testowałem go, więc może gdzieś byk wyskoczyć smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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: 21.06.2025 - 08:04