【问题标题】:Sorting titles and displaying alphabetically, with Alphabet letter preceding entries对标题进行排序并按字母顺序显示,字母在条目之前
【发布时间】:2011-09-23 21:28:57
【问题描述】:

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

进入问题的主体。

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

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/>";
}

我现在该怎么办?

【问题讨论】:

  • 首先将所有内容添加到排序数组中,然后按键排序(ksort)。之后,进行输出。这意味着:将排序逻辑与输出分开。这将使它最终更容易解决。

标签: php sorting


【解决方案1】:

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

$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/>";

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

【讨论】:

  • 这一行出错:if(!in_array($letter, $lettersArray || count($lettersArray) == 0){。解析错误:语法错误,意外'{'
  • 缺少右括号,现在试试吧。
  • $lettersArray 有什么特别的吗?
  • 在所有代码的开头创建 $lettersArray 变量作为新数组
  • 完成了 - 仍然,$letter 作为条目标题回显。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
相关资源
最近更新 更多