Как я могу получить все уникальные комбинации символов слова?

Я понимаю, как работает str_shuffle() или shuffle, но я не знаю этого в этом случае.

 $word="tea"; 

Я хочу повторить все уникальные возможности перетасовки (чай, тае, эта, съесть, съесть, аэту)

Вам нужно произвести все перестановки строки, либо путем итерации через возможности, либо используя рекурсивный метод, подобный приведенному ниже. Обратите внимание, что для массива умеренного размера это очень быстро растет. Для слова с уникальными символами число возможных перестановок равно n! где n – длина. Для шестибуквенного слова массив будет иметь 720 записей! Этот метод не самый эффективный, но в зависимости от того, что вы пытаетесь сделать, он должен работать нормально.

(Источник: http://cogo.wordpress.com/2008/01/08/string-permutation-in-php/ )

 function permute($str) { /* If we only have a single character, return it */ if (strlen($str) < 2) { return array($str); } /* Initialize the return value */ $permutations = array(); /* Copy the string except for the first character */ $tail = substr($str, 1); /* Loop through the permutations of the substring created above */ foreach (permute($tail) as $permutation) { /* Get the length of the current permutation */ $length = strlen($permutation); /* Loop through the permutation and insert the first character of the original string between the two parts and store it in the result array */ for ($i = 0; $i <= $length; $i++) { $permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i); } } /* Return the result */ return $permutations; } 

Обратите внимание, что эта несколько наивная реализация не будет обрабатывать повторяющиеся буквы правильно (например, «семя», имеющее два e`s). Как указано в приведенном выше источнике, вы можете использовать следующий код для устранения дубликатов, если слово содержит несколько одинаковых букв:

 $permutations = array_unique(permute($str));