我有一个wordpress网站(仍在本地主机上开发中,很抱歉,我无法提供链接),提供六年级常见数学概念的定义和解释。网站的主要部分是概念图或web,但我的老板还希望我们提供按字母顺序浏览术语的功能,如字典或索引。
因此,她想要的东西通常可以在网络上找到:所有以A开头的术语都列在“A”下,所有以B开头的术语都列在“B”下,等等。我可以从数据库中检索所有术语并对它们进行排序,但我不确定显示它们的最佳方式。
示例:网页应如下所示:
一头公牛;苹果公司;洋蓟;鳄梨;香蕉;蓝莓等。
我想我可以构建HTML框架,并在每个字母的div中查询数据库中以该字母开头的所有术语。这样(在psuedocode中):
<div id=\'a-section\'>
<?php $terms=$wpdb->get_results("all terms that start with A");
foreach( $terms as $term ) { ?>
<a link-to-definition><?php echo $term ?></a>
<?php } ?>
</div>
<div id=\'b-section\'>
....
为此,我需要对数据库进行26次查询,因此我认为这种方法效率相当低。我能做得更好吗?如果我在一个查询中检索所有术语,按字母顺序排序,然后查看每个术语的第一个字母,会怎么样?这样行吗?似乎是
while( "a" == first-letter-of-$term )
可能无法在
foreach( $results as $term )
, 因为foreach循环对于每个$术语只执行一次。但我真的不想写26(实际上是27,因为有些术语以数字开头)
if( "a" == first-letter-of-$term )
foreach循环内的语句。
我希望我已经清楚地解释了这个困境。有人能建议我该怎么做吗?我认为有人做过类似的事情,但谷歌没有帮我找到任何答案。提前谢谢。