How to group Anagrams from an array of strings in PHP

1 Answer

0 votes
function groupAnagrams($strs) {
    $anagramMap = [];

    foreach ($strs as $str) {
        $sortedStr = str_split($str);
        sort($sortedStr); // Sort characters in the string
        $sortedStr = implode('', $sortedStr);
        
        if (!isset($anagramMap[$sortedStr])) {
            $anagramMap[$sortedStr] = [];
        }
        
        $anagramMap[$sortedStr][] = $str;
    }

    return array_values($anagramMap);
}

$inputWords = ["eat", "tea", "tan", "ate", "nat", "bat", "tae"];
$groupedAnagrams = groupAnagrams($inputWords);

foreach ($groupedAnagrams as $group) {
    echo implode(" ", $group) . "\n";
}



/*
run:

eat tea ate tae
tan nat
bat

*/

 



answered Jun 9, 2025 by avibootz
...