我试图在一段时间内找到字母的出现()..但现在对我来说并不是很有效...这是我现在的代码:
$sql = "SELECT name FROM shops ORDER BY name ASC";
$result = mysqli_query($conn,$sql);
// Previous or first letter
$first = "";
// Current letter
$current = "";
$c_instances = 0;
while($obj = mysqli_fetch_object($result)){
$current = strtoupper(substr($obj->name,0,1));
if(empty($first)){
$first = strtoupper(substr($obj->name,0,1));
}
if($current != $first){
?>
<a href=""><li><?=$first;?> <span><?=$c_instances;?></span></li></a>
<?
$first = strtoupper(substr($obj->name,0,1));
$c_instances = 0;
}
$c_instances++;
}
这确实有点用,但是当涉及到最后一个字母时,它没有显示出来。就像现在一样,它的范围从A-H开始,但它只显示从A到F,而不是最后两个以“H”开头的商店。我有点知道是什么导致它,但我的大脑现在无法解决它...我相信这是因为它使用$ first而不是$ current,因此它回应了之前的那个..让我知道是否你有想法解决这个问题..谢谢
答案 0 :(得分:1)
如果您愿意,可以让SQL为您完成所有工作
SELECT SUBSTRING(name,1,1) as First, count(name)
from shops
GROUP BY First
ORDER BY First;