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.