Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt losujący + terminarz
Forum PHP.pl > Forum > PHP
neV
Więc znalazłem na tym forum kilka skryptów losujących smile.gif chcaiałbym teraz by stworzył on terminarz. Tzn. każda zmienna z każdą ale żeby nie trafiła na siebie samą, jeśli wiecie o co mi chodzi tongue.gif ... coś jak terminarz np. rozgrywek piłkarskich (tylko naprawde losowany a nie dobierany ^^). Więc narazie mam to i co dalej ?

Kod
<?php
$aRandomizer = array( 'foo', 'bar', 'example', 'some other' );
echo $aRandomizer[array_rand( $aRandomizer, 1)];
?>
dtb
chodzi o cos takiego?
  1. <?php
  2. $ile = (int)count ($array)/2;
  3. $array = array_rand ($array);
  4. for ($i = 0; $i < $ile; $i++)
  5. {
  6. echo $array[$i].' vs '.$array[$i+$ile].'<br/>';
  7. }
  8. ?>
neV
Dla takiego kodu

  1. <?php
  2. $array[0] = "a";
  3. $array[1] = "b";
  4. $array[2] = "c";
  5. $ile = (int)count ($array)/2;
  6. $array = array_rand ($array);
  7. for ($i = 0; $i < $ile; $i++)
  8. {
  9. echo $array[$i].' vs '.$array[$i+$ile].'<br/>';
  10. }
  11. ?>


otrzymuje

  1. vs <br/> vs <br/>
dtb
moj blad. zle uzylem funckji array_rand
  1. <?php
  2. $array[0] = "a";
  3. $array[1] = "b";
  4. $array[2] = "c";
  5. $array[3] = "d";
  6. $array2 = array_rand ($array);
  7. while (list ($k1, $v1) = each ($array2))
  8. list ($k2, $v2) = each ($array2);
  9. echo $array[$v1].' vs '.$array[$v2].'<br/>';
  10. }
  11. ?>
neV
błąd w 10 linijce.. po usunięciu tego nawiasu :
  1. Warning: Variable passed to each() is not an array or object in /home/oliomega/public_html/venom/admin/terminarz.php on line 7
  2. vs
vieri_pl
Nie powinno być tak:

  1. <?php
  2. $array[0] = "a";
  3. $array[1] = "b";
  4. $array[2] = "c";
  5. $array[3] = "d";
  6. $array2 = array_rand ($array);
  7. while (list ($k1, $v1) = each ($array2))
  8. list ($k2, $v2) = each ($array2);
  9. echo ''.$array[$v1].' vs '.$array[$v2].'<br/>'; //na poczatku dwa pojedyncze apostrofy
  10. }
  11. ?>
neV
  1. Parse error: parse error, unexpected '}' in /home/oliomega/public_html/venom/admin/terminarz.php on line 10


na moje oko brakuje otwarcia tej klamry
vieri_pl
Właśnie klamra z linii 10 zamyka coś.. ale co questionmark.gif? Nie ma { dry.gif
Sabistik
~vieri_pl wez sie lepiej nie odzywaj..
tam brakuje otwierajacek klamry po while. Niestety mi skrypt dtb nie zabardzo dziala wiec napisalem inaczej:
  1. <?php
  2. $array[0] = "a";
  3. $array[1] = "b";
  4. $array[2] = "c";
  5. $array[3] = "d";
  6. $array[4] = "e";
  7.  
  8. for($i=0;$i<count($array)-1;$i++)
  9. {
  10. for($x=0;$x<count($array);$x++)
  11. {
  12. do
  13. {
  14. $r = array_rand($array);
  15. }
  16. while($array[$r] == $array[$x]);
  17. echo $array[$x] .' vs. '. $array[$r].'<br>';
  18. }
  19. }
  20. ?>


1. aha i nie wiem czy to dokladnie o to Ci chodzi. Jak cos to pisz.
2. lekki edit kodu.
neV
Mysle ze zmierzamy w dobrym kierunku winksmiley.jpg
wynik dla 3zm:


Kod
a vs. b <---
b vs. a <---
c vs. a
a vs. b <---
b vs. c
c vs. a


3 razy powtorzylo sie a z b.. chodzi mi o to by jedna para byla tylko raz wypisana czyli dla tych zmiennych np. cos takiego:

a vs. c
c vs. b
b vs. a

nie znam sie za bardzo na php ale wydaje mi sie ze 1 zmienna moze byc wylosowana x-1 razy gdzie x to ilosc zmiennych (o ile nie jest to oczywiste icokolwiek pomoze smile.gif)
Sabistik
  1. <?php
  2.  
  3. $array[0] = "a";
  4. $array[1] = "b";
  5. $array[2] = "c";
  6. $array[3] = "d";
  7.  
  8.  
  9. $tab = $array; 
  10. for($i=0;$i<count($array)-1;$i++)
  11. {
  12. while(!empty($tab))
  13. {
  14. unset($tab[array_search($array[$i], $tab)]);
  15. $los = array_rand($tab);
  16. echo $array[$i].' - '. $tab[$los].'<br>';
  17. unset($tab[$los]);
  18. }
  19. $tab = $array;
  20. for($x=$i;$x>=0;$x--)
  21. unset($tab[array_search($array[$x], $tab)]);
  22. }
  23.  
  24. ?>


Zobacz to. Nie jest to jakos swietnie napisane ale dziala.. i pewnie mozna to napisac z 2x krócej smile.gif
neV
swietna robota biggrin.gif wielkie dzieki!
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.