Сортировка массива php по одинаковым буквам

На входе есть одномерный массив вида [‘asd’,’qwe’,’sda’,’wqe’,’dsa’,’qwer’,’afds’,’zxc’] Требуется массив сгруппировать по группам слов состоящих из одних и тех же букв. Пример правильного ответа:

[
   [‘asd’,’sda’,’dsa’],
   [‘qwe’,’wqe’],
   [‘qwer’],
   [‘afds],
   [‘zxc’]
]

Ответы (1 шт):

Автор решения: Jean-Claude

Навеяно этим ответом

//создать отсортированный по алфавиту уникальный хеш строки
function AlphabetSoup($string) {
    $letters_array = str_split($string, 1);
    sort($letters_array);
    return join('', $letters_array);
}


//дата
$data = ['asd', 'qwe', 'sda', 'wqe', 'dsa', 'qwer', 'afds', 'zxc'];
$new_array = [];

//перегонка
foreach ($data as $item) {
    //получить уникальный хеш строки
    $key = AlphabetSoup($item);
    //пнуть значение в свой отсек
    $new_array[$key][] = $item;
}
//чикнуть хеш-ключи
$new_array = array_values($new_array);


//array (size=5)
//  0 =>
//    array (size=3)
//      0 => string 'asd' (length=3)
//      1 => string 'sda' (length=3)
//      2 => string 'dsa' (length=3)
//  1 =>
//    array (size=2)
//      0 => string 'qwe' (length=3)
//      1 => string 'wqe' (length=3)
//  2 =>
//    array (size=1)
//      0 => string 'qwer' (length=4)
//  3 =>
//    array (size=1)
//      0 => string 'afds' (length=4)
//  4 =>
//    array (size=1)
//      0 => string 'zxc' (length=3)
→ Ссылка