Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] operacje liczbowe na tablicach
Forum PHP.pl > Forum > Przedszkole
babejsza
Witam,

mam problem, który najprawdopodbniej jest wynikiem wiosennej zwiechy smile.gif.

Mam taką oto tablice:

Kod
Array
(
    [0] => 424
    [1] => 314
    [2] => 349
    [3] => 250
    [4] => 349
    [5] => 250
    [6] => 424
    [7] => 314
    [8] => 348
    [9] => 249
    [10] => 348
)


Teraz za jej pomocą chciuałbym stworzyć nową, która wyglądała by mniej więcej tak:

Kod
Array
(
    [0] => Array
      (
        [0] => 0
        [1] => 2
        [2] => 1087
      )
    [1] => Array
      (
        [0] => 3
        [1] => 5
        [2] => 849
      )
    [2] => Array
      (
        [0] => 6
        [1] => 8
        [2] => 1086
      )
    [3] => Array
      (
        [0] => 9
        [1] => 10
        [2] => 597
      )
)


Chodzi o to, że chcę stworzyć nową tablicę, w której przecowuję wartości "od", "do" oraz "sumę" z piewszej tablicy przy założeniu, że suma nie może przekraczać w tym przypadku 1200.

Podszedłem do tego ze złej strony próbując zrobić to po prostu poprzez pętlę foreach, tyle że ona przenosi mi wskaźnik to następnego klucza już w trakcie liczenia, więc tak być nie może.

Jeżeli ma ktoś pomysł na rozwiązanie mojego (pewnie banalnego) problemu prosiłbym o rady. Będę zobowiązany smile.gif.
sticker
  1. <?php
  2. $tab = array();//tu deklarujesz swoją tabela
  3. $tabNowa = array(); //tu bedzie nowa tabelka
  4. $interwal = 2;
  5. for( $i = 0 ;$i < count( $tab ); $i++) {
  6. $sumator = 0;
  7. $tabMini[]= array();
  8. for( $j = $i ; $i < ($j + $interwal) ; $i++ ){
  9. $sumator += $tab[$i];
  10. $tabMini[] = $tab[$i];
  11. }
  12. $tabMini[] = $sumator;
  13. $tabNow[] = $tabMini;
  14.  
  15. }
  16. ?>


Moze to zadziała, robione na szybko wiec musisz przejrzeć sobie czy ok
babejsza
Nie zrozumiałeś problemu (albo źle go opisałem winksmiley.jpg). Problemem nie jest podzielenie sobie tej tablicy "po 3 elementy" tylko podzielenie takie, aby zapisać klucze wartości, które po zsumowaniu nie przekroczą 1200.

Ale dzięki za dobre chęci smile.gif.
sticker
może smile.gif Wlasnie klepie jakiś kod i tak sie chciałem rozliźnić na chwile smile.gif
babejsza
Podbijam temat bo pomoc ciągle by mi się przydała smile.gif.
Kicok
Do przeanalizowania:
  1. <?php
  2.  
  3. $tablica = array(424, 314, 349, 250, 349, 250, 424, 314, 348, 249, 348);
  4.  
  5.  
  6. $nowa_tablica = array();
  7. $tmp = 0;
  8. $tmp_numb = 0;
  9.  
  10. $c = count($tablica);
  11. for($i=0; $i<$c; $i++)
  12. {
  13. if(($tmp + $tablica[$i]) > 1200) {
  14. $nowa_tablica[] = array($tmp_numb, ($i-1), $tmp);
  15. $tmp = 0;
  16. $tmp_numb = $i;
  17. }
  18.  
  19. $tmp += $tablica[$i];
  20. }
  21. if($tmp > 0) {
  22. $nowa_tablica[] = array($tmp_numb, ($i-1), $tmp);
  23. }
  24.  
  25.  
  26.  
  27. echo('<pre>');
  28. print_r($nowa_tablica);
  29. echo('</pre>');
  30.  
  31. ?>
babejsza
Lol smile.gif Wielkie dzięki. W sumie nie oczekiwałem gotowca, ale tym większe dzięki za poświęcenie smile.gif.

W sumie proste i wydajne rozwiązanie. Coś ta majówka mi nie służy winksmiley.jpg.
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.