您是否希望列表完全按字母順序排列?或者只是按照第一個字母分組?你是否在意沒有開始任何單詞的信件不會顯示爲標題?例如,如果您沒有任何以'x'開頭的單詞,您是否還需要看到一個沒有任何內容的'X'類別,還是應該從'W'跳到'Y'?
確切的實施可能會根據這些問題的答案而有所不同。這是一個解決方案,應該按照字母順序完全顯示列表,跳過沒有任何單詞的類別。 (不知道你想要什麼樣的標記,這是相當的骨頭)。
$result = mysql_query("SELECT col FROM table ORDER BY col");
$lastFoundLetter = '';
while($row = mysql_fetch_array($result)) {
//get the first letter of the current record
$firstLetter = substr($row['col'], 0, 1);
if ($firstLetter != $lastFoundLetter) {
//you've started a new letter category
if ($lastFoundLetter != '') {
//if there's a real value in $lastFoundLetter, we need to close the previous div
echo "</div>";
}
echo "<div id='" . strtoupper($firstLetter) . "'>";
echo strtoupper($firstLetter) . "<br/>";
$lastFoundLetter = $firstLetter;
}
echo $row['col']. "<br/>";
}
//close the last div
if ($lastFoundLetter != '') {
echo "</div>";
}
謝謝Jay!你的建議幫助了我。我用一個for來檢查數組,並檢查該項目的第一個字母是否與前一個項目的第一個字母不同。 – Cosmi 2012-03-19 22:21:58