我编写了这个简单的代码,它输出存储在每个表行中的第一个值字母(在本例中为公司名称):
include_once('db.php'); //connection with database
$result = mysql_query("SELECT distinct Name FROM companies ORDER BY Name");
while ($row = mysql_fetch_array($result)) {
$letter = substr($row[0], 0, 1);
echo '<p><a href="#">' . $letter . '</a>/p>';
}
公司表包含公司名称,$letter
变量包含这些名称的第一个字母。
显然,在公司表中,有许多名称以相同的字母开头。
现在,如何在许多字母“A”,“B”,“C”等中只显示一个字母“A”,一个字母“B”,一个字母“C”等?
答案 0 :(得分:4)
为什么不把它放在查询本身?
将查询修改为
SELECT distinct SUBSTRING(Name,1,1) FROM company ORDER BY SUBSTRING(Name,1,1)
答案 1 :(得分:0)
要在PHP中执行此操作,您可以创建一个空白数组,并将每个公司的第一个字母推送到数组中,如果它不存在,如下所示:
include_once('db.php'); //connection with database
$result = mysql_query("SELECT distinct Name FROM companies ORDER BY Name");
$letters = array();
while ($row = mysql_fetch_array($result)) {
if(!in_array(substr($row[0], 0, 1), $letters)){
array_push($letters, substr($row[0], 0, 1));
}
}
foreach($letters as $l){
echo '<p><a href="#">' . $l . '</a></p>';
}
如果您想显示字母表中的所有字母,即使公司没有以该字母开头,您也可以使用PHP范围函数:
foreach (range('a', 'z') as $letter) {
echo '<p><a href="#">' . $letter . '</a></p>';
}
答案 2 :(得分:0)
使用此SQL语句
SELECT DISTINCT SUBSTR(Name,1,1) FROM companies ORDER BY Name;
这将从名字的第一个字母返回不同的值;