請有這個問題,首先快速閱讀: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)對其進行排序。之後,做輸出。這意味着:將輸出的排序邏輯分開。這將使它最終解決起來更簡單。 – hakre