in_array Prüft, ob ein Wert in einem Array existiert
Ist für die Aufgabenstellung eingeeignet, da diese Funktion auch bei einmaligem Vorhandensein anschlägt.
Es wäre nützlich, falls er das zu prüfende array erst noch zusammenbaut oder bei einer Prüfung innerhalb einer Schleife bei der er alle bereits vorhandenen Werte in einem weiteren array speichert.
Das von Dir genannte array_count_values erledigt das auch so ähnlich, nur daß die Prüfung auf doppelte Werte danach noch ausgeführt werden muß.
...(Es sei denn, du beziehst deine Aussage auf das Beispiel des OP.)
Bingo und selbst wenn nicht, eine fertige Lösung ist bei all dem was geschrieben wurde nicht dabei und die ermittlung der Keys, vermutlich das kleinste Problem, falls überhaupt nötig.
Zu allem was dann größer als 1 ist kann man nun mit array_keys() die Schlüssel der jeweiligen Werte ermitteln.
Falls ihn die Keys interessieren. Man kann das aber alles in einem Rutsch mit einer Schleife einem if-else und in_array erledigen.