Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] operacje liczbowe na tablicach, majowa zwiecha
babejsza
post
Post #1





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

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


Witam,

mam problem, który najprawdopodbniej jest wynikiem wiosennej zwiechy (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Ten post edytował babejsza 30.04.2007, 13:41:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


  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

Ten post edytował sticker 30.04.2007, 13:50:38
Go to the top of the page
+Quote Post
babejsza
post
Post #3





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

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


Nie zrozumiałeś problemu (albo źle go opisałem (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
sticker
post
Post #4





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


może (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wlasnie klepie jakiś kod i tak sie chciałem rozliźnić na chwile (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
babejsza
post
Post #5





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

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


Podbijam temat bo pomoc ciągle by mi się przydała (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
Kicok
post
Post #6





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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. ?>
Go to the top of the page
+Quote Post
babejsza
post
Post #7





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

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


Lol (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wielkie dzięki. W sumie nie oczekiwałem gotowca, ale tym większe dzięki za poświęcenie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

W sumie proste i wydajne rozwiązanie. Coś ta majówka mi nie służy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 18:36