Algoritmo que tomará números o palabras y encontrará todas las combinaciones posibles.

Estoy buscando un algoritmo que tome números o palabras y encuentre todas las posibles variaciones de los mismos y también me permite definir cuántos valores buscar juntos.

Ejemplo, digamos que la cadena o matriz es:

cat  
dog  
fish  

entonces los resultados para un valor de 2 podrían ser:

cat dog  
cat fish  
dog cat  
dog fish  
fish cat  
fish dog   

Por lo tanto, los resultados del conjunto de 3 elementos son 6 posibles variaciones del mismo en 2 resultados coincidentes
con 3 resultados iguales sería:

cat dog fish  
cat fish dog  
dog cat fish  
dog fish cat  
fish cat dog  
fish dog cat  

... probablemente más opciones incluso

He encontrado un enlace en Stackoverflow a este ejemplo que hace esto pero está en javascript, me pregunto si alguien sabe cómo hacer esto en PHP, ¿quizás hay algo ya construido?

http://www.merriampark.com/comb.htm (enlace muerto)

Respuestas a la pregunta(3)

Su respuesta a la pregunta