检查并显示一个字母出现的次数(A,B,C等..)PHP

时间:2016-12-03 15:12:25

标签: php count instances

我试图在一段时间内找到字母的出现()..但现在对我来说并不是很有效...这是我现在的代码:

$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,因此它回应了之前的那个..让我知道是否你有想法解决这个问题..谢谢

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您愿意,可以让SQL为您完成所有工作

SELECT SUBSTRING(name,1,1) as First, count(name)
from shops
GROUP BY First
ORDER BY First;