Autor Zpráva
krupis
Profil *
Ahoj...potřeboval bych poradit, jak třídit na základě dvou kritérií... Dělám tabulku pro sportovní klub. Nejdřív třídím na základě bodů:

function cmp($a, $b) {
    if ($a == $b) {
       return 0;
    }
    return ($a > $b) ? -1 : 1;
}
$body = array('Chodov' => $chodov_body, 'Karviná' => $karvina_body, 'Litovel' => $litovel_body, 'Náchod' => $nachod_body, 'Ostrava' => $ostrava_body, 'Brno' => $brno_body);

uasort($body, 'cmp');


Tohle mi do pole $body hezky seřadí týmy podle bodů. Teď ale přichází okamžik, kdy mají např. 2 týmy stejný počet bodů a já potřebuju rozlišit umístění těchto dvou týmu podle rozdílu ve skóre. Rozdíl mezi vstřelenými a obdrženými brankami mám uložený v proměnných $chodov_rozdil, $karvina_rozdil atd...Napadlo mě vytvořit podmínku pro tyhle proměnné a vložit to do "function cmp" na místo, kde je v ukázce "return 0;". Jenže... jak ten skript pozná, když se např. rovnají $chodov_body a $karvina_body, že má srovnat právě $chodov_rozdil a $karvina_rozdil; ?

Díky za rady...
Moderátor Str4wberry: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
fajzen
Profil
Lenže ani v tom tvojom poli, ktoré radíš, nemáš žiadne informácie o rozdieloch v skóre... Ak spravíš to pole dvojdimenzionálne, napr:
$teamy = array(
  'Chodov' => array(
    'body' => $chodov_body,
    'rozdil' => $chodov_rozdil
  ),
  'Karviná' => array(
    'body' => $karvina_body,
    'rozdil' => $karvina_rozdil
  )
)

tak by funkcia cmp() mohla vyzerať takto:
function cmp($a, $b) {
    if ($a['body'] == $b['body']) {
       return ($a['rozdil'] > $b['rozdil']) ? -1 : 1;
    }
    return ($a['body'] > $b['body']) ? -1 : 1;
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0