Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] mt_rand()
Forum PHP.pl > Forum > Przedszkole
Gość_Max_*
Wywołuje taki skrypt:
  1. <?php
  2. for($a = 0, $b = 5; $a < $b; $a++)
  3. {
  4. $id = mt_rand(1, 7);
  5.  
  6. echo $id.'<br>';
  7. }
  8. ?>

I problem w tym, że czasem wyświetla się 1,4,6,1,1 a ja bym chciał, żeby liczby się nie powtarzały sad.gif
Jojo
Zamiast wyświetlać wylosowane liczby zapakuj to w tablicę, a potem array_unique" title="Zobacz w manualu php" target="_manual i masz tablicę bez powtarzających się wartości.
Gość
Ale chodzi o to żeby było dokładnie 5 wyników.
Jojo
W takim razie wykonuj w pętli array_unique i sprawdzenie czy tablica ma już 5 elementów, jeśli nie, kręć pętlę dalej.
kszychu
Robisz tablicę wypełniasz ją liczbami od 1 do 7, szuflujesz ją (shuffle) i pobierasz pięć pierwszych elementów.
Gość
Zrobiłem coś takiego

  1. <?php
  2. $query = mysql_query("Select COUNT( * ) FROM $links_b_tbl");
  3. $fetch = mysql_fetch_array($query);
  4. $all = $fetch[0];
  5.  
  6. $b = 5;
  7.  
  8. while($c < $b)
  9. {
  10. $id = mt_rand(1, $all);
  11.  
  12. $query2 = mysql_query("SELECT title, link FROM $links_b_tbl WHERE id = $id");
  13. $fetch2 = mysql_fetch_array($query2);
  14.  
  15. $title = $fetch2['title'];
  16. $link = $fetch2['link'];
  17.  
  18. $links = '<a href ="'.$link.'">'.$title.'</a><br>';
  19.  
  20. $array[] = $links;
  21.  
  22. $print = array_unique($array);
  23.  
  24. $c = count($print);
  25.  
  26. }
  27.  
  28. for($a = 0; $a < $b; $a++)
  29. {
  30. echo $print[$a];
  31. }
  32. ?>

Ale zwracany wynik wyświetla czasem 5, a czasem mniej wyników dlaczego?
Jojo
Ehh trzeba było mówić że chcesz to wykorzystać do wybrania losowych rekordów z MySQL. Możesz użyć czegoś takiego:
  1. SELECT * FROM tablica ORDER BY RAND() LIMIT 0, 5

Powyższe wyświetli ci dokładnie 5 losowych rekordów.
Gość
Dzięki tongue.gif W sumie nie wpadłem na to, że mysql ma taki bajer 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.