我想按一个数组中某个值出现多少次来对我的数组进行排序,然后只打印最高的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);
}
最佳答案
哼...您可以这样做:
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);
再见:)
关于php - PHP和MySQL:对数组中最流行的值进行计数和排序,然后打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6052535/