对标题进行排序并按字母顺序显示,条目前面有字母


Sorting titles and displaying alphabetically, with Alphabet letter preceding entries

请先快速阅读这个问题:用给定字段中的第一个字母分隔条目列表

转到问题的主体。

我正在尝试对给定数组中的几个标题进行排序。目前,它们是按字母顺序排列的,然而,当前的代码并没有实现另一个目标:显示按字母顺序分组的字母。以下示例:

A
=====================================
 - Alice's Adventured in Wonderland
 - Animal Farm
B
=====================================
 - Beyond the Chocolate War

等等。

当前,代码显示如下:

Alice's Adventured in Wonderland
Animal Farm
Beyond the Chocolate War

正如你所看到的,我现在需要按字母顺序进行分类。HTML输出的另一个示例如下:http://wiki.solusvm.com/index.php/Category:Documentation(注意,我只需要它来显示类别+标题,HTML输出)

这是我目前掌握的代码:

<?php
function shamil_title_compare($a, $b) {
    return strcasecmp($a['title'], $b['title']);
}
usort($entries, 'shamil_title_compare');
$alphabetized = array();
foreach (range('A', 'Z') as $letter) {
    $alphabetized[$letter] = array();
}
foreach ($entries as $entry) {
    $title = $entry['title'];
    $firstWord = strtok($title, ' ');
    if (!in_array($firstWord, array('The', 'A'))) {
         $alphabetized[$firstWord[0]][] = $entry;
    } else {
        $nextWord = strtok(' ');
        if ($nextWord !== false) {
            $alphabetized[$nextWord[0]][] = $entry;
        } else {
            $alphabetized[$firstWord[0]][] = $entry;
        }
    }
       echo $entry['title']."<br/>";
}

我现在该怎么办?

我会将每个新字母添加到echo $entry['title']."<br/>"; 之前的数组中

$letter = substr($entry['title'],0,1);
if(!in_array($letter, $lettersArray) || count($lettersArray) == 0){
    array_push($lettersArray,$letter);
    echo $letter.'<p><hr /></p>';
}
echo $entry['title']."<br/>";

这会检查字母是否已经在数组中,如果没有,它会添加并打印出来。