Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sumowanie określonej liczby elementów tablicy
tomxx
post 23.10.2013, 17:40:44
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Potrzebuję skryptu, który sumuje określoną ilość elementów tablicy. Mam taki kod:

  1. <?php
  2. function sumowanie($tablica, $x) {
  3.  
  4. for($n = $x; $x > 0; $x--) {
  5. $tablica[$x] += $tablica[$x-1];
  6. }
  7.  
  8. return $tablica[1];
  9.  
  10. }
  11.  
  12. echo sumowanie([1, 2, 3, 4], 2);
  13.  
  14. ?>


Zmienna $x stanowi ilość elementów do zsumowania. Np. powyższy przykład powinien wyświetlić 6 (zerowy element = 1, pierwszy = 2, drugi = 3, a więc 1+2+3 = 6), a pokazuje 3, więc zapewne mam coś źle w kodzie. Czy ktoś wiedziałby jak to rozwiązać?
Go to the top of the page
+Quote Post
patrysiek2
post 23.10.2013, 18:41:37
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 5
Dołączył: 8.12.2011
Skąd: Łomża

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


Zadenie jest banalnie proste dzięki funkcji array_sum()

  1. <?php
  2. // tablica z dowolnymi liczbami
  3. $a = array(10, 3, 2, 12, 6);
  4.  
  5. // oliczanie sumy
  6. $suma = array_sum($a);
  7.  
  8. // wyświetlamy sumę
  9. echo $suma;
  10.  
  11. ?>


--------------------
if($problem == 1)
{
header("Location: http://www.forum.php.pl");
}
else
{
thinking();
}
Go to the top of the page
+Quote Post
tomxx
post 24.10.2013, 14:21:15
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Chodziło mi o sumę określonej liczby elementów w tablicy.

Na szczęście zacząłem myśleć i znalazłem rozwiązanie biggrin.gif

  1. <?php
  2. function sumuowanie($tablica, $ileElementów) {
  3.  
  4. $liczbaIteracji = 0;
  5. $wynik = 0;
  6.  
  7. foreach($tablica as $liczba) {
  8. $liczbaIteracji++;
  9. $wynik += $liczba;
  10. if($liczbaIteracji == $ileElementów) break;
  11. }
  12.  
  13. return $wynik;
  14.  
  15. }
  16.  
  17. ?>


Tak na marginesie - ta funkcja była mi potrzebna do losowania liczb z określonym prawdopodobieństwem (losuje element, a później sprawdza go z tablicą zawierającą prawdopodobieństwa). Wniosek - do tablic najlepiej używać pętli foreach. smile.gif

Ten post edytował tomxx 24.10.2013, 14:38:59
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2013, 14:24:31
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Zgrabna funkcja, brawo. smile.gif

Mam małą radę: nazywaj zmienne zgodnie z ich rolą. $a, $b, $x - te nazwy nic nie mówią, a kod powinien być czytelny dla osób z zewnątrz. Poza tym ładnie smile.gif
Go to the top of the page
+Quote Post
phpion
post 24.10.2013, 14:28:00
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(tomxx @ 24.10.2013, 15:21:15 ) *
Wniosek - do tablic najlepiej używać pętli foreach. smile.gif

Nie, to tablic najlepiej używać odpowiednich funkcji o ile istnieją, a w Twoim przypadku istnieją.
  1. $sum = array_sum(array_slice($array, 0, $n));

gdzie $array to tablica danych, a $n to liczba elementów do zsumowania.
Go to the top of the page
+Quote Post
tomxx
post 24.10.2013, 14:37:34
Post #6





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Cytat(phpion @ 24.10.2013, 15:28:00 ) *
Nie, to tablic najlepiej używać odpowiednich funkcji o ile istnieją, a w Twoim przypadku istnieją.


Miałem na myśli, że pętli foreach trzeba zawsze używać, kiedy chce się wykonać jakieś iteracje na tablicach, w poprzednim wypadku męczyłem się z pętlą for.

Na przyszłość postaram się bardziej twórczo myśleć, bo faktycznie zmarnowałem na tę funkcję kilka dni. wink.gif
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: 30.04.2025 - 04:56