まず、配列をキーでアルファベット順に並べ替えます。
ksort($myArray);
または、大文字と小文字を区別しない並べ替えを行う場合:
uksort($myArray, "strnatcasecmp");
次に、一時配列を作成して、同じ文字で始まるすべての単語をサブ配列にグループ化します。
$arrTemp = array();
foreach($myArray as $strKey => $strValue) {
$strLetter = strtolower( substr($strKey, 0, 1) );
if(array_key_exists($strLetter, $arrTemp) === FALSE) {
$arrTemp[$strLetter] = array();
}
array_push( $arrTemp[$strLetter], $strKey );
}
最後に、HTML をレンダリングします。
foreach($arrTemp as $strLetter => $arrWords) {
print('<ul>' . strtoupper($strLetter));
foreach($arrWords as $strWord) {
print(' <li>' . $strWord . '</li>');
}
print('</ul>');
}