Diskuze: Algoritmus - nejčastěji vyskytující se hodnota

PHP PHP Algoritmus - nejčastěji vyskytující se hodnota American English version English version

Avatar
Martin Štěpánek (Enormyk):

Ahoj,
nevíte jak sestavit algoritmus, který zjistí jaká položka v poli se vyskytuje nejčastěji?
Budu mít například pole žánrů:

Fantasy
Sci-fi
Sci-fi
Fantasy
Biografie
Fantasy
Sci-fi
Fantasy
Biografie
Fantasy

a potřebuji, aby mi to zjistilo, že zrovna žánr fantasy se vyskytuje nejčastěji. Teoreticky by se to dalo napsat:

if($zanr == 'Fantasy'){
 $fantasy++;
} else if($zanr == 'Sci-fi'){
$scifi++;
}

a pak zjistit, kde je největší hodnota. Problém je v tom, že nevím jaké položky (v tomto případě žánry) tam budou.
Předem děkuji za pomoc. :-)

Odpovědět 24. září 16:09
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
Oxtimus
Člen
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
Oxtimus:

Ahoj, zkus tohle:

$zanry = ['Fantasy', 'Sci-fi', 'Sci-fi', 'Fantasy', 'Biografie', 'Fantasy', 'Sci-fi', 'Fantasy', 'Biografie', 'Fantasy'];

$poctyPolozek = array_count_values($zanry); // Nové pole s počty výskytů prvků v původním poli ["Fantasy" => 4, "Sci-fi" => 3, ...].

$nejcetnejsi = array_search(max($poctyPolozek), $poctyPolozek); // Z předchozího pole vybere ten prvek, který má největší hodnotu (počet výskytů).

echo $nejcetnejsi; // Vypíše Fantasy.
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 24. září 16:36
Avatar
Nahoru Odpovědět 24. září 18:25
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.