Общее количество данных в массиве

0

Я пытаюсь получить общее количество стран, введенных в моем дБ. Очевидно, что некоторые из них будут дублировать, поэтому мне не нужно общее количество строк, а общее количество стран. Так, например:

Russia -> 5
USA -> 10
Canada -> 6
Mexico -> 12

В этом наборе данных число, которое я бы попытался получить, равно 4.

Прямо сейчас у меня есть этот запрос:

$query = mysqli_query($con, "SELECT COUNT(id) AS countCnt, country FROM users GROUP BY country ORDER BY COUNT(id) DESC");

то я повторяю значения запроса:

   while($row = mysqli_fetch_assoc($query)) {
    $country = $row['country'];
    $countryCount = $row['countCnt'];
    $countries[$country] = $countryCount;
    }
    $country_text = array_keys($countries);
    $country_count = array_values($countries);

Как я могу вернуть общий граф стран из $country_text? Я хочу присвоить это число переменной $ x.

Любая помощь будет оценена по достоинству.

Теги:

3 ответа

1
Лучший ответ

Поскольку вы являетесь группой GROUPING BY, количество строк, в которые возвращается ваш запрос, будет числом стран. Так

$x = mysqli_num_rows($query);
  • 0
    И это завершает это: for ($ i = 0; $ i <$ x; $ i ++) {echo "['{$ country_text [$ i]}'". ",". "{$ Country_count [$ я]}],"; спасибо @ Ник.
0

Альтернативой является использование подзапросов:

SELECT COUNT(*) as total FROM(
    SELECT COUNT(id) AS countCnt, country FROM users
    GROUP BY country ORDER BY COUNT(id) DESC
)
-1

http://php.net/manual/en/function.array-unique.php

$country_text = array_unique($countries);
  • 0
    я даже не слышал об этом, лол, но я прочитал в руководстве. Я понимаю, к чему вы клоните, но мне кажется, что приведенный выше способ проще, учитывая мой запрос. Я ценю ответ. Приветствия.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню