Autor | Zpráva | ||
---|---|---|---|
jval Profil * |
#1 · Zasláno: 2. 11. 2014, 15:39:14
Zdravím mám z db generované pole pro tabulku pořadí týmů v turnaji. Pomocí
usort($orders, function ($a, $b) { return $b['body'] - $a['body']; }); Řešil někdo něco podobného? |
||
Jan Tvrdík Profil |
#2 · Zasláno: 2. 11. 2014, 15:45:08
jval:
A kde je problém? Akorát rozšíříš tu porovnávací funkci, aby brala v potaz více pravidel. |
||
jval Profil * |
#3 · Zasláno: 2. 11. 2014, 16:02:06
Ja Tvrdík: zatím jsem to vyřešil tak, že před vzájemný zápas jsem upřednostnil celkové skóre.
usort($orders, function ($a, $b) { if ($b['body'] == $a['body']) { return $b['score'] - $a['score']; } else { return $b['body'] - $a['body']; } }); Např. 3 týmy skončili s 9 body Tým A porazil Tým B Tým B porazil Tým C Tým C porazil Tým A Takže všichni jsou na prvním místě a tady by mělo teprve nastoupit celkové skóre, ale to že i po porovnání vzájemných zápasů jsou na tom ty týmy pořád stejně zjistím až po projetí celého cyklu usort. |
||
Jan Tvrdík Profil |
#4 · Zasláno: 2. 11. 2014, 16:57:45
jval:
Jestli ti tam můžou vznikat cykly, tak to trochu komplikuje, protože musíš kontrolovat jestli tam ten cyklus je nebo není. Jinak jak by podle tebe mělo být seřazeny týmy A a B podle vzájemných zápasů, pokud A remízovalo s B, B porazilo C a C porazilo A? |
||
jval Profil * |
#5 · Zasláno: 2. 11. 2014, 17:36:44
[#4] Jan Tvrdík
V případě remízy A vs B by u tohoto zápasu asi muselo rozhodnout celkové skóre |
||
Alphard Profil |
#6 · Zasláno: 2. 11. 2014, 18:20:25
jval:
Jak vypadá $orders ? Je z něj vůbec možné zjistit, jak dopadly ty vzájemné zápasy?
|
||
Kajman Profil |
#7 · Zasláno: 2. 11. 2014, 18:54:15
Pro týmy, které mají stejně bodů bych udělal minitabulku se získanými body jen mezi sebou. Ty týmy se zkusí dořadit podle ní. Nesnažil bych se tu všechnu logiku nacpat do jedné funkce pro usort - kritérií bývá postupně většinou více.
|
||
jval Profil * |
#8 · Zasláno: 2. 11. 2014, 19:09:14 · Upravil/a: jval
[#6] Alphard
Z orders ne, ale mam v tu chvíli načtené pole matches, ze kterého by se to na základě orders, dalo načíst. orders je např: [2] => Array ( [id_tym] => 16 [id_turnaj] => 2 [registrace] => ne [nazev] => VÍCHA [logo] => 16.png [facebook] => [vedouci_id_hraci] => 120 [rozdeleni] => dospělí [zakladni_skupina] => C [zakladni_cislo] => 1 [poradi_skupina] => D [poradi_cislo] => 2 [score] => 0 [body] => 0 ) [4] => Array ( [id_tym] => 17 [id_turnaj] => 2 [registrace] => ne [nazev] => TEAM Coca Cola [logo] => 17.jpg [facebook] => [vedouci_id_hraci] => 125 [rozdeleni] => dospělí [zakladni_skupina] => C [zakladni_cislo] => 2 [poradi_skupina] => D [poradi_cislo] => 4 [score] => 0 [body] => 0 ) [C1C2] => Array ( [C1] => 5225 [C2] => 5025 ) Bohužel DB stavěl někdo jiný, takže se s tím občas blbě pracuje a nebyl čas to celé překopat. |
||
Časová prodleva: 9 let
|
0