0

我需要在 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 查询的结果

我只有一个关联属性“id_deseada”,所以我现在做

while($row = mysql_fetch_array($result){
         $t = $row['id_deseada'];
 }

所以不是那样,我想我必须像第一个例子那样做;排序 $result 按重复次数排序,也许在一个带有新字段 'count' 的新数组中更好?

这一切都是因为这个查询而开始的:

选择articles.id as id_deseada,tags.* FROM article,tags WHERE tags.id_article =articles.id AND tags.name IN ('name one','name two','form search inputs','...)

问题是每个标签都返回一个结果,我想要每篇文章的结果..

4

2 回答 2

2

首先,像这样生成值数组:

$vals = array();
while($row = mysql_fetch_array($result){
         $vals[] = $row['id_deseada'];
}

然后,计数排序

$valCounts = array_count_values($vals);
arsort($valCounts);
$result = array_keys($valCounts);
于 2011-01-16T12:07:29.807 回答
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使用分组和排序从数据库中选择按重复排序的 's。

SELECT id_deseada FROM lol
GROUP BY id_deseada
ORDER BY COUNT(*) DESC

结果:1、5、9、2、3、4。

于 2011-01-16T12:16:30.707 回答