abcdef
abcdfe
abcedf
abcefd
abcfde
abcfed
abdcef
abdcfe и т.д.
(c) Okula
/**
* Генерация всех возможных перестановок
*
* @param array $newarr заполняемый массив
* @param string $string исходная строка
* @param string $prefix перфикс
*/
function variant(array &$newarr, $string, $prefix='') {
if(empty($string)) {
$newarr[] = $prefix;
return;
}
$len = mb_strlen($string, 'utf-8');
for($i=0; $i<$len; $i++) {
$string_array = str_split($string);
if(isset($string_array[$i])) unset($string_array[$i]);
variant($newarr, implode('', $string_array), $prefix.$string{$i});
}
}
#-------------------------#
$string = 'abcdef';
$arr = array();
variant($arr, $string);
var_dump($arr);