Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] array_push() i foreach() dodawanie i wyświetlanie wyników
mpps
post
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


witam.
mam funkcję, która generuje losowe liczby.
potrzebuję dodać wygenerowane liczby do osobnej tablicy, w której będę mógł je porównać i określić, czy się powtarzają, i jeśli tak, to ile razy.
  1. <?php
  2. function generate(){
  3. global $tablicaliczb;
  4. $ile  = 6; // ile liczb
  5. $od = 1; // przedział od
  6. $do = 100; // przedział do
  7.  
  8. $range = range($od, $do);
  9. $rand = array_rand($range, $ile);
  10.  
  11. foreach($rand as $key){
  12. echo $liczba.$endl;
  13.  
  14. $tablicaliczb = array($liczba); //to nie działa (wyświetla tylko ostatnią wygenerowaną liczbę)
  15. array_push($tablicaliczb, $liczba); //to też...
  16. }
  17. }
  18.  
  19. $ilosclosowan = 10;
  20. $i = 1;
  21. while($i <= $ilosclosowan){
  22. generate(); //to działa
  23. $i++;
  24. echo "<br>";
  25. }
  26.  
  27. echo "<p>wylosowane liczby i ich powtarzalność:<br>";
  28. print_r($tablicaliczb); //wyświetla tylko ostatnią wygenerowaną liczbę
  29. ?>

może ktoś z Was ma pomysł?

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mpps
post
Post #2





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


z pierwszą częścią problemu już sobie poradziłem.

@JoShiMa oj nieładnie... uważasz, że oprócz ciebie nikt manuali nie czyta? zadałem konkretne pytanie nt. rozwiązania problemu, a nie 'co to jest za funkcja array()'

@rgalka niestety nie. błąd był tu:
  1. <?php
  2. $tablicaliczb = array($liczba); //powinno być:
  3. $tablicaliczb = $liczba; //bo $liczba już jest tablicą: $liczba = $range[$key]; - tej linii zabrakło w kodzie... sorry
  4. ?>

rozwiązanie wygląda tak:
  1. <?php
  2. function generate(){
  3. global $tablicaliczb;
  4. $ile  = 10; // ile liczb
  5. $od = 1; // przedział od
  6. $do = 100; // przedział do
  7.  
  8. $range = range($od, $do);
  9. $rand = array_rand($range, $ile);
  10.  
  11. foreach($rand as $key){
  12. $liczba = $range[$key];
  13. echo $liczba;
  14. $tablicaliczb[] = $liczba;
  15. }
  16. }
  17.  
  18. $ilosclosowan = 10;
  19. $i = 1;
  20. while($i <= $ilosclosowan){
  21. generate();
  22. $i++;
  23. echo "<br>";
  24. }
  25.  
  26. //wyświetlamy nową tablicę
  27. function pokaztabliceliczb($tablicaliczb)
  28. {
  29. $buf = '';
  30. foreach($tablicaliczb as $key => $value){
  31. $buf .= $value.", ";
  32. }
  33. return $buf;
  34. }
  35.  
  36. echo pokaztabliceliczb($tablicaliczb);
  37. ?>

tu widzimy, że wszystkie dane ładnie zostały wpisane do nowej tablicy.

teraz druga część zadania:
ponieważ dane w tablicy się powtarzają, chcę je wyświetlić w ten sposób, że wyświetlę wszystkie dane wraz z podaniem ilości powtórzeń, np.

23 - 2
14 - 1
35 - 4
itd...

mogą być posortowane od najmniejszej do największej występującej liczby...
nawet nie wiem, jak się do tego zabrać na ten moment...
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 08:22