我希望按照该数组中出现的值的次数来命令我的数组,然后再打印出最高的6个结果。
这就是我现在所拥有的:
$delimiter = " ";
$tags = array();
$sql = mysql_query("SELECT tags FROM share WHERE site_id = $id");
while($result = mysql_fetch_assoc($sql)) {
$tags_new = explode($delimiter, $result['tags']);
$tags = array_merge($tags , $tags_new);
}
答案 0 :(得分:3)
您可以使用以下查询在MySQL中执行此操作:
SELECT tags, COUNT(tags) AS tag_count
FROM share WHERE site_id = $id
GROUP BY tags
ORDER BY tag_count DESC
LIMIT 6;
这将选择计数最多的前6个标签。然后,您可以循环遍历它们,类似于您已有的PHP代码。
答案 1 :(得分:3)
while($result = mysql_fetch_assoc($sql)) {
$tags_new = explode($delimiter, $result['tags']);
foreach($tags_new as $tag){
$tags[$tag]++;
}
}
之后,您需要使用函数sort
或rsort
(desc)按值排序。
rsort($tags);
最后,你需要切片并且首先得到6:
$high_tags = array_slice($tags, 0, 6, true);
修改:显示关键字和值:
foreach($high_tags as $key => $value){
echo "{$key}: {$value}";
}
或者只是这样做:
$high_keys = array_keys($high_tags);
var_dump($high_keys);
再见:)