PHP&;MySQL:对数组中最常用的值进行计数和排序,然后打印
我想按数组中某个值出现的次数对数组进行排序,然后只打印最高的6个结果 这就是我目前的情况:PHP&;MySQL:对数组中最常用的值进行计数和排序,然后打印,php,mysql,count,Php,Mysql,Count,我想按数组中某个值出现的次数对数组进行排序,然后只打印最高的6个结果 这就是我目前的情况: $delimiter = " "; $tags = array(); $sql = mysql_query("SELECT tags FROM share WHERE site_id = $id"); while($result = mysql_fetch_assoc($sql)) { $tags_new = ex
$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);
}
您可以通过以下查询在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代码一样对它们进行循环。您可以通过以下查询在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代码一样对它们进行循环。哼。。。你可以这样做:
while($result = mysql_fetch_assoc($sql)) {
$tags_new = explode($delimiter, $result['tags']);
foreach($tags_new as $tag){
$tags[$tag]++;
}
}
之后,需要使用函数sort
或rsort
(desc)按值排序
最后,您需要切片,只需先获得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);
再见:)哼。。。你可以这样做:
while($result = mysql_fetch_assoc($sql)) {
$tags_new = explode($delimiter, $result['tags']);
foreach($tags_new as $tag){
$tags[$tag]++;
}
}
之后,需要使用函数sort
或rsort
(desc)按值排序
最后,您需要切片,只需先获得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);
再见:)PS:我同意杰森的回答。对于大的结果(以及优化),它比我的要好。谢谢,但是在回顾之后,我认为OP不会以关系方式存储
标记。所以你的答案可能是他们必须使用的。感谢迄今为止的帮助。此时,您上面提供的代码正在打印值出现的次数,而不是值本身。您需要获取密钥。我编辑了我的代码以供您理解。:)附言:我同意杰森的回答。对于大的结果(以及优化),它比我的要好。谢谢,但是在回顾之后,我认为OP不会以关系方式存储标记。所以你的答案可能是他们必须使用的。感谢迄今为止的帮助。此时,您上面提供的代码正在打印值出现的次数,而不是值本身。您需要获取密钥。我编辑了我的代码以供您理解。:)我需要做哪些更改才能使其正常工作?您需要以更相关的方式存储标记。因此,与其在一个记录中存储多个标记,不如将每个标记存储在多个记录中。然后,您就可以使用上面的查询和其他查询来确定统计信息。为了使其正常工作,我需要做哪些更改?您需要以更相关的方式存储标记。因此,与其在一个记录中存储多个标记,不如将每个标记存储在多个记录中。然后您就可以使用上面的查询和其他查询来确定统计信息。