Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wypełnianie tablicy w pętli
wojtektorr
post 23.03.2013, 08:48:13
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2011

Ostrzeżenie: (10%)
X----


Witam, jestem początkującym i proszę o wyrozumiałość. Mam problem z wypełnieniem tablicy jednowymiarowej o rozmiarze i=43 kolejnymi liczbami 1,2,3 ... 43. Dodatkowo przy załadowaniu ponownie strony wartości mają sie przesówać w lewo a pierwszy wyraz na koniec, taki wąż zjadający swoją doope. Poniżej kawałek funkcji która nie działa do końca dobrze (pewnie błąd w konstrukcji pętli for), poproszę o poprawkę.
  1. if (file_exists("counter.txt")) {
  2. $file=fopen("counter.txt","r");
  3. $licznik=chop(fgets($file,100));
  4. if ($licznik>42) $licznik=0;
  5. $licznik++;
  6. fclose($file);
  7. $file=fopen("counter.txt","w");
  8. fwrite($file,$licznik);
  9. fclose($file);
  10. }
  11. else {
  12. $file=fopen("counter.txt","w");
  13. fwrite($file,$licznik);
  14. fclose($file);
  15. }
  16.  
  17. for ($i=1;$i<44;$i++) {
  18. if ($licznik>43) $licznik=1;
  19. $liczba[$i-1]=$i+$licznik;
  20. if ($liczba[$i-1]>43) {
  21. $liczba[$i-1]=$licznik-1;
  22. }
  23. }
  24.  
Go to the top of the page
+Quote Post
_Borys_
post 23.03.2013, 10:40:25
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Stworzenie tablicy z przedziałem elementów
  1. $licznik = range(1, 43);

Przesuwanie z początku na koniec
<----
---->
  1. array_push($licznik,array_shift($licznik));


Ten post edytował _Borys_ 23.03.2013, 10:46:22
Go to the top of the page
+Quote Post
wojtektorr
post 23.03.2013, 12:44:03
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2011

Ostrzeżenie: (10%)
X----


Nie bardzo wiem jak to zastosować, proszę o dalszą pomoc.
Go to the top of the page
+Quote Post
_Borys_
post 23.03.2013, 12:52:44
Post #4





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Dałem odpowiedź na twoje pytania
Cytat
Mam problem z wypełnieniem tablicy jednowymiarowej o rozmiarze i=43 kolejnymi liczbami 1,2,3 ... 43

Odp.
  1. $licznik = range(1, 43);

Cytat
Dodatkowo przy załadowaniu ponownie strony wartości mają sie przesówać w lewo a pierwszy wyraz na koniec, taki wąż zjadający swoją doope.

Odp.
  1. array_push($licznik,array_shift($licznik));

Powiedz co chcesz osiągnąć to pomożemy.
Go to the top of the page
+Quote Post
wojtektorr
post 23.03.2013, 12:58:44
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2011

Ostrzeżenie: (10%)
X----


Odnoszę się nadal do tego mojego kawałka kodu, to jak wypełnic tablice to wiem i wykonałem to pętlą for ale jak ta petle poprawić aby była taka rotacja wartosci w tej tablicy? Nie wiem w którym mijescu zastosować ta procedure array_shift. Moge prosić o konkretny kawałek kodu realizujący taka rotację z użyciem fora?
Go to the top of the page
+Quote Post
Fifi209
post 23.03.2013, 13:00:24
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Z opisu śmiem twierdzić, że kolega chce zrobić bufor cykliczny

Czyli tablica powinna mieć rozmiar n+1


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
wojtektorr
post 23.03.2013, 14:09:48
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2011

Ostrzeżenie: (10%)
X----


No coś takiego jak bufor cykliczny, mój kod realizuje to co na obrazku przy kazdym kolejnym odswiezeniu strony co prawda wpisuje liczbe na ogon węża ale... (na obrazku powinno byc widać w czym problem). http://s21.postimg.org/xyrp44wo7/tab.jpg

Ten post edytował wojtektorr 23.03.2013, 14:10:48
Go to the top of the page
+Quote Post
Fifi209
post 23.03.2013, 15:58:30
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Tutaj masz bardzo prosty bufor cykliczny:
  1. <?php
  2.  
  3. $w_pointer = 0;
  4. $r_pointer = 0;
  5. $buffer = array();
  6.  
  7. function add($data, &$wp, &$arr)
  8. {
  9. $arr[$wp] = $data;
  10. $wp = ($wp == 3) ? 0 : ++$wp;
  11. }
  12.  
  13. function read(&$rp, &$arr)
  14. {
  15. $temp = $arr[$rp];
  16. $rp = ($rp == 3) ? 0 : ++$rp;
  17. return $temp;
  18. }
  19.  
  20. $buff_temp = array();
  21.  
  22. add('Test', $w_pointer, $buffer);
  23. $buff_temp[] = $buffer;
  24.  
  25. add('Test2', $w_pointer, $buffer);
  26. $buff_temp[] = $buffer;
  27.  
  28. add('Test3', $w_pointer, $buffer);
  29. $buff_temp[] = $buffer;
  30.  
  31. add('Test4', $w_pointer, $buffer);
  32. $buff_temp[] = $buffer;
  33.  
  34. add('Test5', $w_pointer, $buffer);
  35. $buff_temp[] = $buffer;
  36.  
  37. add('Test6', $w_pointer, $buffer);
  38. $buff_temp[] = $buffer;
  39.  
  40. echo '<pre>';
  41. print_r($buff_temp);
  42. echo '</pre>';
  43.  
  44. echo '<hr>';
  45.  
  46. echo read($r_pointer, $buffer).'<br/>';
  47. echo read($r_pointer, $buffer).'<br/>';
  48. echo read($r_pointer, $buffer).'<br/>';
  49. echo read($r_pointer, $buffer).'<br/>';
  50. echo read($r_pointer, $buffer).'<br/>';
  51.  
  52. ?>


Napisałem go dla Ciebie, przy okazji pokazując jak działa.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
wojtektorr
post 24.03.2013, 17:20:06
Post #9





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2011

Ostrzeżenie: (10%)
X----


Dzięki, ale szczerze powiedziawszy to spodziewałem się prostrzego rozwiązania :/ Dzięki jeszcze raz.
Go to the top of the page
+Quote Post
Fifi209
post 24.03.2013, 18:55:16
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Nie patrz na ilość kodu, bo 80% jest tylko po to, aby pokazać że działa smile.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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: 16.04.2024 - 08:37