Fibolg
17.06.2004, 08:19:36
Czy ktoś się orientuje może czy jest w php funkcja kombinacji bez powtórzeń? Chodzi o to, żeby z tablicy liczb, które są równocześnie kluczami tabeli drużyn rozlosować pary do turnieju, na tej zasadzie, że wybrana para nie uczestniczy w dalszym losowaniu: Np jest osiem drużyn, tablica (1,2,3,4,5,6,7,8). Funkcja z tych ośmiu drużyn powinna rozlosować dwie, które zapisane zostaną w bazie. Powstać musi nowa tablica np. gdy wylosuje 4 i 7: tablica2 (1,2,3,5,6,8). itd...
Jeżeli nie za pomocą takiej funkcji to może ktoś rozwiązywał podobny problem kiedyś w inny sposób? Prosiłbym o sugestie :roll2:
Dziękuję i pozdrawiam
byther
17.06.2004, 10:02:47
<?php
function kzk($druzyny) {
for ($a = 0; $a < $ilosc; $a++) {
for ($b = 0; $b < $ilosc; $b++) {
if ($a > $b) {
$vs[] = array($druzyny[$a], $druzyny[$b]); }
}
} return $vs;
}
'Drużyna A',
'Drużyna B',
'Drużyna C',
'Drużyna D',
);
// zrób użytek z array_rand() :-)
foreach (kzk($druzyny) as $d) {
echo \"{$d[0]} - {$d[1]}n\"; }
?>
pzdr.
byther
scanner
17.06.2004, 10:22:21
<?php
// Tabela druzyn
$arrTeams = array ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' ); // Tabela par
// numeracja par
$intGame = 1;
// pomieszaj tablice
// petla, poki nie zestawiono dostpenych par
// jelsi ilosc druzyn nieparzuysta - jedna zostaje niewylosowana
while ( count($arrTeams) > 1 ) {
// wez pierwszy element
$arrGames[$intGame]['Home'] = array_shift( $arrTeams ); // wez ostatni element
$arrGames[$intGame]['Guest'] = array_pop( $arrTeams ); $intGame++;
}
// wyswietlamy:
foreach( $arrGames as $intGame => $arrGame )
{
echo 'Game: '.$intGame.'</br />'; echo '»Home: Team '.$arrGame['Home'].'<br />'; echo '»Guest: Team '.$arrGame['Guest'].'<br /><br />'; }
echo 'Team not included: Team '.$arrTeams[0
]; ?>
Update:
1.
array_shift" title="Zobacz w manualu PHP" target="_manual() i
array_pop" title="Zobacz w manualu PHP" target="_manual() skracają tablicę podaną jako parametr i zwracają poprany z niej element. Więc nie trzeba chodzić po indexach.
2. Można w obydwu przypadkach zastosować tylko jedna funkcję, nt. tylko
aray_shift" title="Zobacz w manualu PHP" target="_manual() zdejmującą index 0, ale chciałem pokażać działanie obu tych rzadko stosowanych funkcji.
Fibolg
17.06.2004, 10:35:08
scanner , gdybym mógło to bym Cie uściskał

Dzięki wielkie! Dokładnie o to mi chodziło! Jeszcze tylko powiązanie z BD i gotowe. Dzięki raz jeszcze!
<-- dodane później
-->To może ktoś jeszcze pomorze mi zapisywać te pary do tablicy? Mam tablice następującą LOSOWANIA:
| ID | FTURNIEJ | FTEAM1 | FTEAM2 | TEAM1WYNIK | TEAM2WYNIK | DATAMECZU |
I tak: Z tablicy przypisującej drużynę do turnieju wybieram wszystkie TEAMy, które biorą udział w turnieju. Zapisuję ich ID do tej tablicy.... i jak teraz zapisać te pary do takiej tablicy? Mam już coś zmajstrowane, ale nie bardzo działa... zapisuje tylko pierwszy rekord jakoś dziwnie