Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rand i pętla czyli losowanie liczby
Forum PHP.pl > Forum > Przedszkole
Woytek950
Witam. Chcę napisać skrypt losujący liczbę i jeżeli liczba znajduje się w tablicy (bazie mysql) to losuje inną. Jak to zrobić?
Próbowałem z pętlą for ale nie poradziłem sobie.
Wicepsik
Pokaż skrypt który napisałeś. Ja bym użył pętli while
DiH
Zmień kolejność. Najpierw pobierz pola z bazy, zwykłym whilem zapisz je do tablicy, a potem przy losowaniu sprawdzaj.
  1. while($c = mysql_fetch_array($zapytanie) {
  2. tablica[] = $c['pole_z_liczba'];
  3. }
  4. $zmienna = rand(5, 20);
  5. for($i = 0; $i < sizeof($tablica); $i++) {
  6. if(tablica[$i]==$zmienna) {
  7. $zmienna = rand(5, 20);
  8. }
  9. else {
  10. echo $zmienna;
  11. }
  12. }
Fifi209
Cytat(DiH @ 21.03.2010, 12:54:21 ) *
Zmień kolejność. Najpierw pobierz pola z bazy, zwykłym whilem zapisz je do tablicy, a potem przy losowaniu sprawdzaj.
  1. while($c = mysql_fetch_array($zapytanie) {
  2. tablica[] = $c['pole_z_liczba'];
  3. }
  4. $zmienna = rand(5, 20);
  5. for($i = 0; $i < sizeof($tablica); $i++) {
  6. if(tablica[$i]==$zmienna) {
  7. $zmienna = rand(5, 20);
  8. }
  9. else {
  10. echo $zmienna;
  11. }
  12. }


A słyszałeś o in_array ?
DiH
Nie.
#luq
A po drugie nie wpisuj w warunek pętli for wywołania funkcji, policz przed pętlą, w warunku pętli jedynie porównuj.
DiH
@up Co mam policzyć niby? Jeżeli wylosowana wartość znajduje się już w tablicy, to wykonuje kolejne losowanie.
#luq
  1. for($i = 0; $i < sizeof($tablica); $i++)


=>

  1. $foo = sizeof( $tablica );
  2. for( $i = 0; $i < $foo; $i++ )



ale oczywiście tak jak mówi fifi209, powinno to być:
  1. if( in_array( [...] ) )
luck
Żeby była pełna jasność winksmiley.jpg
  1. do {
  2. $zmienna = rand(5, 20);
  3. } while(in_array($zmienna, $tablica));
  4. echo $zmienna;
Woytek950
Dzięki wszystkim.
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.