Я использую следующий метод php, чтобы найти 10 лучших элементов в массиве, а затем возвращать новый массив с этими 10 элементами вместе с тем, сколько раз они появляются. Это хорошо для небольших массивов. Но я получаю данные из базы данных, а массивы могут быть более 100000. Это заставляет этот метод быть чрезвычайно медленным. Код выглядит следующим образом:Сортировка массива в PHP и выборка данных из SQL
function getTopTenSelects($array) {
$result = [];
for ($x = 0; $x <= 10; $x++) {
$count = countArray($array);
$mostOccuring = (key($count));
$arrayReturn[$x] = $mostOccuring;
array_push($result, [$mostOccuring,$count[$mostOccuring]]);
foreach ($array as $temp) {
if (($key = array_search($mostOccuring, $array)) !== false) {
// Cuts the key from the array foreach time it appears so we can find the next most occuring value
unset($array[$key]);
}
}
}
return $result;
}
Теперь. Я получаю свой массив через следующий SQL-запрос. $hashtag
- это переменная, содержащая кусок строки.
SELECT tag_names
FROM soc_stat
JOIN tags on soc_stat.insta_id = tags.insta_id
WHERE main_tag = $hashtag
Есть эффективный способ сделать это в PHP, или есть способ получить то, что мне нужно через запрос SQL?
В какой таблице находятся теги «tag_names» и «main_tag»? –