Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Tablice i rand()
PawelC
post 4.03.2008, 02:24:15
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Mam taki kod w php
  1. <?
  2.  
  3. $tbl[1] = "1";
  4. $tbl[2] = "2";
  5. $tbl[3] = "3";
  6. $tbl[4] = "4";
  7. $tbl[5] = "5";
  8.  
  9. for( $x = 0; $x < 5; $x++ ) { // Pętla wykona się 5 razy (0...4)
  10. $tablica=rand(1,5);
  11. echo $tbl[$tablica];
  12.  
  13. }
  14.  
  15. ?>

co w efekcie daje, różną kolejność liczb
  1. 53454

I chodzi mi o to jak zrobić aby kolejność cyfr się niepowtarzała, a jak wyczerpią się wszystkie możliwości to wyświetli komunikat np brak możliwości losowania?

Ten post edytował ExPlOiT 4.03.2008, 02:25:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
dr_bonzo
post 4.03.2008, 03:44:28
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


array_rand() + unset() + array_keys() + count()


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Pilsener
post 4.03.2008, 12:37:59
Post #3





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


  1. <?php
  2. $tbl[1] = "1";
  3. $tbl[2] = "2";
  4. $tbl[3] = "3";
  5. $tbl[4] = "4";
  6. $tbl[5] = "5";
  7. ?>
+ range() winksmiley.jpg
Go to the top of the page
+Quote Post
PawelC
post 4.03.2008, 15:09:04
Post #4





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


A czy dobrym pomysłem jest aby zapisywać do bazy każdy utowrzony łańcuch liczb, i pobierać je z bazy porównując z tym co powstał jeżeli był to generuje na nowo a jak niebył to zapisuje? Próbowałem z tym range() ale powstaje mi tylko jeden kod i to wszystko. Przykładowy kod:
  1. <?
  2.  
  3. $tbl[1] = "1";
  4. $tbl[2] = "2";
  5. $tbl[3] = "3";
  6. $tbl[4] = "4";
  7. $tbl[5] = "5";
  8.  
  9. $tablica=range('1', '5');
  10. foreach ($tablica as $litera) {
  11.  echo $tbl[$litera];
  12.  
  13. } 
  14. ?>

Powstanie tylko 12345
Go to the top of the page
+Quote Post
Pilsener
post 4.03.2008, 15:53:26
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Sposób jeden:
  1. <?php
  2. $t = range(1,9);
  3. $ile = count($t);
  4. while($ile > 0){
  5.  $los = array_rand($t);
  6.  echo $los.'<br />';
  7.  unset($t[$los]);
  8.  $ile = count($t);
  9. }
  10. if ($ile ==0){echo '<p>Wylosowano wszystko</p>';}
  11. ?>

Sposób drugi:
  1. <?php
  2. $tab = range(1,9);
  3. foreach($tab as $linia){
  4.  $los = array_rand($tab);
  5.  echo $los.'<br />';
  6.  unset($tab[$los]);
  7.  }
  8. if (empty($tab)){echo '<p>Wylosowano wszystko</p>';}
  9. ?>
- pisane na szybkiego, ale może działa. W ramach pracy domowej zrób to jeszcze w pętli for. I poczytaj w manualu o funkcjach array_*, tablicach i pętlach.
Go to the top of the page
+Quote Post
eldo
post 4.03.2008, 17:34:19
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.08.2007
Skąd: Cardiff

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


a może poprostu przemieszać tablice używając shuffle ( $tablica) a nastepnie ją wyświetlić
pozdrawiam
Go to the top of the page
+Quote Post
dr_bonzo
post 4.03.2008, 17:38:46
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


eldo: masakra, ja ........e, ze tez nie wpadlem na tak banalne rozwiazanie, tylko zaczalem kombinowac, przeciez i tak losujemy wszystkie elementy i nie moga sie powtarzac smile.gif


No chyba ze nie zawsze losujemy wszystkie elementy...


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
roxton
post 5.03.2008, 15:18:06
Post #8





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 5.03.2008

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


spoko, tego szukalem
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: 14.08.2025 - 11:13