
<?php

class Klasemen {
    private $poin = [];
    private $urutan = [];

    public function __construct($klub) {
        foreach ($klub as $i => $nama) {
            $this->poin[$nama] = 0;
            $this->urutan[$nama] = $i;
        }
    }

    public function catatPermainan(
        string $klubKandang,
        string $klubTandang,
        string $skor
    ): void {
        list($skorKandang, $skorTandang) = array_map(
            'intval',
            explode(':', $skor)
        );

        if ($skorKandang > $skorTandang) {
            $this->poin[$klubKandang] += 3;
        } elseif ($skorKandang < $skorTandang) {
            $this->poin[$klubTandang] += 3;
        } else {
            $this->poin[$klubKandang] += 1;
            $this->poin[$klubTandang] += 1;
        }
    }

    public function cetakKlasemen(): array {
        $hasil = $this->poin;

        uksort($hasil, function ($a, $b) use ($hasil) {
            if ($hasil[$a] == $hasil[$b]) {
                return $this->urutan[$a]
                    <=> $this->urutan[$b];
            }

            return $hasil[$b] <=> $hasil[$a];
        });

        return $hasil;
    }

    public function ambilPeringkat(int $nomorPeringkat): string {
        $klasemen = $this->cetakKlasemen();
        $klub = array_keys($klasemen);

        return $klub[$nomorPeringkat - 1] ?? '';
    }
}

$klasemen = new Klasemen([
    'Liverpool', 'Chelsea', 'Arsenal'
]);

$klasemen->catatPermainan('Arsenal', 'Liverpool', '2:1');
$klasemen->catatPermainan('Arsenal', 'Chelsea', '1:1');
$klasemen->catatPermainan('Chelsea', 'Arsenal', '0:3');
$klasemen->catatPermainan('Chelsea', 'Liverpool', '3:2');
$klasemen->catatPermainan('Liverpool', 'Arsenal', '2:2');
$klasemen->catatPermainan('Liverpool', 'Chelsea', '0:0');

print_r($klasemen->cetakKlasemen());
echo $klasemen->ambilPeringkat(2);