a ver si esto te sirve:
Código PHP:
$unicas = array();
foreach ($arreglo as $nombre) {
if (array_key_exists($nombre, $unicas)) {
$unicas[$nombre]++;
}
else {
$unicas[$nombre] = 1;
}
asort($unicas);
}
Es decir, recorrés la matriz original y vas poniendo en $unicas la cantidad de veces que aparece cada elemento. Después ordenás $unicas con asort().
Y al final simplemente hacés un foreach y vas mostrando cada palabra.
Si pudieras saber de antemano (que no siempre es posible) las palabras, podrías declarar
$unicas = array('juan' => 1, 'jose' => 1, ....);
y luego podrías simplificar el foreach eliminando el if y haciendo que siempre sume 1.
Saludos.