Я пытаюсь сделать заказ от большого количества кликов до более низкого, и я немного растерялся, поэтому я решил задать вопрос здесь.
Мой код:
$stmt = $db->query("SELECT DISTINCT `country` FROM `entries` ORDER by `id` ASC");
if ($stmt->rowCount() > 0) {
while ($row = $stmt->fetch()) {
$clicks = $db->query("SELECT `id` FROM `entries` WHERE `country` LIKE '{$row['country']}'")->rowCount();
$conversations = $db->query("SELECT `id` FROM `conversations` WHERE `country` LIKE '{$row['country']}' AND `link_id` = '{$id}'")->rowCount();
}
Я хочу, чтобы foreach дал мне результаты с наибольшим количеством $clicks
до самого низкого.
Есть идеи, что я могу сделать?
Вы можете сделать этот запрос полностью в SQL с помощью чего-то вроде этого (в зависимости от диалекта SQL):
$countries = $db->query("SELECT `country`, count(1) AS clicks FROM `entries` GROUP BY `country` ORDER BY clicks DESC");
foreach ($countries as $country) {
echo "${country['country']} has ${country['clicks']} clicks. ";
}
поставить число clicks
в массиве, как показано ниже:
$clicks[] = $db->query("SELECT `id` FROM `entries` WHERE `country` LIKE '{$row['country']}'")->rowCount();
тогда вы можете просто отсортировать массив по rsort
Функция PHP, как показано ниже:
echo rsort($clicks);