count — проверить и показать, сколько раз появляется буква (A, B, C и т. д.) Переполнение стека

Я пытаюсь найти вхождения писем через некоторое время () … но сейчас это не совсем у меня получается … Вот код, который у меня есть сейчас:

$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

Решение

Вы можете заставить SQL делать всю работу за вас, если хотите

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]