我需要在php中执行此操作
假设我有[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,9,9,9,9,9]
我想要[1,5,9,2,3,4]
但我的情况有点不同,这是来自mysql查询的结果
我只有一个asociative atribute'id_deseada',所以我现在
while($row = mysql_fetch_array($result){
$t = $row['id_deseada'];
}
所以不是那样,我想我必须像第一个例子一样做事;按重复次数排序$ result,并在新数组中使用新字段'count'进行beetter?
这一切都是因为这个问题而开始的:
选择articles.id为id_deseada,tags。* FROM文章,标签WHERE tags.id_article = articles.id AND tags.name IN('name one','name two','form search inputs','.. 。)
问题是每个标签返回一个结果,我想要每篇文章的结果..
答案 0 :(得分:2)
首先,生成如下的值数组:
$vals = array();
while($row = mysql_fetch_array($result){
$vals[] = $row['id_deseada'];
}
$valCounts = array_count_values($vals);
arsort($valCounts);
$result = array_keys($valCounts);
答案 1 :(得分:0)
您实际上可以使用SQL查询来执行此操作。例如,我们有这个表:
create table lol (id_deseada int);
insert into lol values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(2),(3),(4),(5),(5),(5),(5),(5),(5),(5),(5),(5),(5),(5),(9),(9),(9),(9),(9);
您可以通过重复使用分组和排序从数据库中选择id_deseada
。
SELECT id_deseada FROM lol
GROUP BY id_deseada
ORDER BY COUNT(*) DESC
结果:1,5,9,2,3,4。