Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sumowanie określonej liczby elementów tablicy
Forum PHP.pl > Forum > Przedszkole
tomxx
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ć?
patrysiek2
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. ?>
tomxx
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
SmokAnalog
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
phpion
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.
tomxx
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
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.