首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对标题进行排序并按字母顺序显示,并在条目之前显示字母

对标题进行排序并按字母顺序显示,并在条目之前显示字母
EN

Stack Overflow用户
提问于 2011-06-28 06:42:34
回答 1查看 759关注 0票数 0

请先快速阅读一下这个问题:Separating a list of entries by the first letter in a given field

进入问题的正文。

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

代码语言:javascript
复制
A
=====================================
 - Alice's Adventured in Wonderland
 - Animal Farm

B
=====================================
 - Beyond the Chocolate War

以此类推。

当前,代码如下所示:

代码语言:javascript
复制
Alice's Adventured in Wonderland
Animal Farm
Beyond the Chocolate War

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

这是我到目前为止得到的代码:

代码语言:javascript
复制
<?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/>";
}

我现在该干啥?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-28 06:50:14

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

代码语言:javascript
复制
$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/>";

这将检查字母是否已在数组中,如果没有,则将其相加并打印出来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6499790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档